как можно сказать, когда действие Android закончено, загрузившись?

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

17
задан Derrick 18 January 2010 в 21:51
поделиться

2 ответа

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

Не уверен, что это поможет в данном конкретном случае, но в целом, определить, когда очередь событий пользовательского интерфейса пуста, можно с помощью вызова getInstrumentation().waitForIdleSync(). Это будет блокироваться до тех пор, пока больше не будет никаких событий пользовательского интерфейса, которые необходимо обработать.

3
ответ дан 30 November 2019 в 14:50
поделиться

Если вы создадите подобный метод setUp() в вашем тестовом случае, расширяя ActivityInstrumentationTestCase2

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

    final MyActivity activity = getActivity();

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

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

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

    assertNotNull(tv1);
    assertEquals("mystr1", tv1.getText().toString());
    assertNotNull(tv1);
    assertEquals("mystr2", tv2.getText().toString());
}
1
ответ дан 30 November 2019 в 14:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: