Как проверить текущую активность в тесте пользовательского интерфейса - PullRequest
0 голосов
/ 15 марта 2020

Для тестов я использую Espresso и Barista У меня есть тест, в котором мне нужно открыть другой экран, нажав кнопку. Как я могу проверить, открывается ли этот экран? Нужно ли открывать экран?

Можно ли как-нибудь проверить цепочку экранов? Чтобы понять, что экраны открываются в нужном мне порядке?

Если кто-то кинет ссылки на хорошие учебники по тестам пользовательского интерфейса в Android, я буду очень признателен.

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Я лично использую intended(hasComponent(YourActivityToCheckAgainst::class.java.name)), который проверяет, было ли последнее намерение выполнено с желаемым действием, установленным в качестве его компонента.

Я также написал обширное Android UI руководство по тестированию используя библиотеки Espresso + Barista.

1 голос
/ 06 апреля 2020

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

onView(withId(R.id.id_of_element_in_your_new_screen)).check(matches(isDisplayed()))

Если вы действительно хотите проверить текущую активность, которая отображается, вы можете попробуйте что-то вроде этого:

Соберите текущую активность с помощью InstrumentationRegistry и проверьте активность на этапе RESUMED.

fun getTopActivity(): Activity? {
    InstrumentationRegistry.getInstrumentation().runOnMainSync {
        val resumedActivities = ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(Stage.RESUMED)
        if (resumedActivities.iterator().hasNext()) {
            resumedActivities.iterator().next()?.let {
                activity = it
            }
        }
    }
    return activity
}

Затем вы можете проверить это в следующем тесте:

@Test
fun checkForActivity() {
    val currentActivity = getTopActivity()
    assertTrue(currentActivity?.javaClass == YourActivityToCheckAgainst::class.java)
}
...