Android Espresso: правильно тестировать закрытие приложения с помощью pressBack - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь реализовать некоторые навигационные тесты с эспрессо.На самом деле я хочу проверить, было ли приложение закрыто с помощью клавиши «Назад» на главном экране, сразу после нового запуска.Вот фрагмент кода, который я использую.

class NavigationTests  {
    @get:Rule
    val mActivityTestRule: ActivityTestRule<MainActivity> = ActivityTestRule(MainActivity::class.java)

    @Test
    fun backOnEmptyHomeMustExit(){
        Espresso.pressBack()
        Assert.assertTrue(mActivityTestRule.activity==null)
    }
}

На самом деле я получил тест неудачно из-за следующего исключения:

android.support.test.espresso.NoActivityResumedException: Отодвинул и убил приложение

Я видел некоторые предложения в stackoverflow об использовании блока try / catch, но мне интересно, есть ли более правильный способ сделать это?

Как протестировать приложение для Android, закрытое с помощью Espresso

Android - Тест эспрессо с помощью pressBack

РЕДАКТИРОВАТЬ: Похоже, этот шаблонэто путь:

try {
    pressBack();
    fail("Should have thrown NoActivityResumedException");
} catch (NoActivityResumedException expected) { 
}

1 Ответ

0 голосов
/ 07 июня 2019

Короткий ответ :

Использование Espresso.pressBackUnconditionally().

Я проверил версию 3.1.1

Пример :

Espresso.pressBackUnconditionally()
assertTrue(activityRule.activity.isDestroyed)

Объяснение :

Как видно из Исходный код Expresso , он передает false флаг PressBackAction,чтобы не выкидывать исключение.

...