Однако, если он появляется, и я не закрываю его в рамках своего теста, тест блокируется от продолжения (поскольку он не распознает никаких других идентификаторов представлений) и завершается ошибкой.
Есть у кого-нибудь есть рекомендации о том, как я могу с этим справиться?
Каждый раз, когда вы пишете тест, вы должны убедиться, что соблюдены необходимые условия для надежного и последовательного выполнения рассматриваемого теста. Это часть «упорядочить» идиомы Arrange, Act, Assert .
Следовательно, если вы тестируете поток, который включает диалог, вы должны организовать тест для настройки условие, при котором отображается это диалоговое окно.
Если вы тестируете поток, в котором не диалоговое окно, вы должны настроить тест, чтобы установить условие, при котором диалоговое окно не show.
Вы не разместили код, поэтому я понятия не имею, что такое «условие» для отображения диалогового окна, но в основном вам нужно сделать что-то в своем тесте, чтобы гарантировать, что условие ложно, если вы этого не сделаете хотите диалог или правда, если хотите. Может быть, это установка общих предпочтений?
Так, например, ваш тест может выглядеть примерно так:
@Test
fun myAwesomeTest() {
// Arrange - do something to ensure dialog does not show
SomeHelperClass.setConditionToShowDialog(false)
// Act - do actions knowing the dialog will not show
onView(withId(R.id.awesomeId)).perform(click())
// Assert
onView(withId(R.id.duperId)).check(matches(isVisible()))
}
Опять же, без специфики вашего кода, трудно дать более подробную информацию, но Надеюсь, этого достаточно, чтобы вы начали.
Надеюсь, это поможет!