#android #android-espresso
#Android #android-espresso
Вопрос:
У меня есть несколько тестов, которые, похоже, завершаются неудачей только при первом запуске, вот пример одного из них;
class OptionDialogTest {
@get:Rule
val activityScenarioRule = activityScenarioRule<MainActivity>()
@Test
fun optionDialogTest() {
val selected = R.string.manage_categories
var dialog: OptionDialog? = null
activityScenarioRule.scenario.onActivity { activity: MainActivity? ->
dialog = OptionDialog("test", "test", arrayOf(R.string.drawer_categories,selected), activity as Context)
dialog!!.setConfirm { _, _ -> }
dialog!!.show()
}
onView(withId(R.id.custom)).perform(click()) //this line sometimes doesn't execute causing the test to fail, presumably it doesn't execute in time.
onView(withText(R.string.manage_categories)).inRoot(isPlatformPopup()).perform(click())
onView(withText(R.string.Yes)).inRoot(isDialog()).perform(click())
assertEquals(dialog!!.getSelected(), selected)
}
}
ошибка, которую выдает android studio,; Waited for the root of the view hierarchy to have window focus and not request layout for 10 seconds. If you specified a non default root matcher, it may be picking a root that never takes focus.
я только предполагаю, что часть кода выполняется не полностью асинхронно. Я не знаю, испытывают ли другие разработчики случайные сбои при тестировании или как бы я это исправил.
любая помощь или идеи приветствуются.
Комментарии:
1. Вы пытались изменить неисправную строку на
onView(withId(R.id.custom)).inRoot(isDialog()).perform(click())
? Возможно, он выбирал представление из неправильного корня.2. У меня нет, но это имело бы смысл, я попробую и посмотрю, повторится ли это снова.