Как принять диалог в модульном тестировании? - PullRequest
4 голосов
/ 22 апреля 2011

У меня есть модульный тест, который открывает пользовательский диалог и вводит некоторый текст.Это работает, но я не могу принять диалоговое окно или получить кнопку ОК.Кто-нибудь может подсказать, как автоматизировать принятие диалога с помощью junit.

    ActivityMonitor activityMonitor = instrumentation.addMonitor(
            EditItem.class.getName(), null, false);

    instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);
    instrumentation.invokeContextMenuAction(gridList, R.id.add, 0);

    Activity activity = instrumentation.waitForMonitorWithTimeout(
            activityMonitor, 10);
    assertNotNull("Make sure the edit item activity was called", activity);
    assertEquals("Make sure the edit item activity was called",
            EditItem.class, activity.getClass());

    final TextView nameView = (TextView) activity.findViewById(R.id.name);

            // this opens the dialog
    TouchUtils.clickView(this, nameView);

            // this adds some text
    for (int i = 0; i < 3; i++)
    {
        instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_X);
    }

            // here I would like to accept the ok button on the dialog

ОК. Кажется, я обошел эту проблему комбинацией нажатий клавиш

    instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
    instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);

Проблема сейчасЯ не могу сказать, когда диалоговое окно было закрыто и возвращено в родительское действие, чтобы продолжить тест с

            instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);

Обойти это тоже можно сейчас:

            instrumentation.waitForIdleSync();
    instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);

Кажется немного неуклюжим, это как вы должны использовать эти инструменты?

1 Ответ

0 голосов
/ 23 июля 2012

У меня такая же проблема. Это выглядит так, что вам нужно создать собственный диалог. Это позволит вам получить кнопки, которые вы добавили, используя findViewById (). Вот ссылка, которую я нашел и которая поможет вам выбрать правильный путь.

http://www.mkyong.com/android/android-custom-dialog-example/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...