как узнать, когда загрузка Android закончилась? - PullRequest
17 голосов
/ 19 января 2010

Я работаю над автоматизированным набором тестов для нашего приложения для Android и сталкиваюсь с проблемами, ожидая полной загрузки действий. Я могу вызвать getActivity, но только потому, что оно показывает действие, которое я надеюсь увидеть в моем тесте, не всегда означает, что компоненты действия готовы к использованию (полностью загружены). Просмотр Activity API ничего не дал, а другие методы кажутся слишком инвазивными и испортили начальное состояние тестов. Кто-нибудь знает, есть ли способ спросить приложение или виртуальную машину, загружена ли текущая активность?

Ответы [ 2 ]

3 голосов
/ 19 января 2010

Как я уже упоминал в комментарии , ваша иерархия представлений должна работать после вашего звонка на setContentView() в начале onCreate().У меня никогда не было таких проблем с какими-либо занятиями или тестовым классомпусто по телефону getInstrumentation().waitForIdleSync().Это будет блокировать, пока не будет больше событий пользовательского интерфейса для обработки.

1 голос
/ 19 января 2010

Если вы создадите setUp() метод, подобный этому, в вашем тестовом примере, расширяющий ActivityInstrumentationTestCase2<MyActivity>

@Override
protected void setUp() throws Exception {
    super.setUp();

    final MyActivity activity = getActivity();

    tv1 = (EditNumber)activity.findViewById(resId1);
    tv2 = (EditNumber)activity.findViewById(resId2);
}

Ваша активность будет полностью работоспособна, а макет загружен, что продемонстрировано в этом случае тем, что вы можете получить доступ к представлениям и их содержимому

@SmallTest
public void testSimpleCreate() {
    final MyActivity activity = getActivity();
    assertNotNull(activity);

    assertNotNull(tv1);
    assertEquals("mystr1", tv1.getText().toString());
    assertNotNull(tv1);
    assertEquals("mystr2", tv2.getText().toString());
}
...