Эспрессо: как убивать приложение каждый раз перед началом теста - PullRequest
0 голосов
/ 05 января 2020

Я записываю тесты в kotlin с помощью expresso, и когда я его запускаю, эспрессо, похоже, покидает состояние приложения как есть, если тест не пройден или когда он переходит к следующему тесту. Я хочу сделать эти тесты независимыми и не запускать их по порядку или не выполнять условие if в приемочных тестах. Так что я искал способ убить его так же, как приложение fullReset с возможностью в appium.

Я попытался использовать реализацию бегуна теста ORCHESTRATOR, но как только я это добавил параметры теста gradle syn c и он показывает, что тесты не запускаются, хотя у меня есть тег аннотации @Test, но как только я удалю его, я смогу запустить тесты.

Я даже перед каждым тестом пытались выставить .edit() .clear() и .commit() в sharedpreference, но опять же это не поможет. Приложение возобновляется, а не перезапускается при запуске следующего теста.

А потом я снова попробовал Espresso.pressback(), но, несмотря на это, приложение все еще только возобновляет

Ответы [ 2 ]

0 голосов
/ 09 января 2020
testInstrumentationRunnerArguments clearPackageData: 'true' 

в defaultConfig в файле оценки проекта, у меня работает.

Однако для этого требуется orchestrator, я предлагаю очистить и восстановить перед запуском теста.

Вот как я добавил оркестратор:

androidTestUtil 'androidx.test:orchestrator:1.1.0'

в качестве зависимостей

execution 'ANDROIDX_TEST_ORCHESTRATOR'

в параметрах теста.

0 голосов
/ 06 января 2020

Сброс настроек в @Before может быть слишком запоздалым в вашем случае, потому что он вызывается после начала действия. Вы можете попытаться создать собственное правило теста до начала действия:

class MyActivityTestRule : ActivityTestRule<MyActivity>(MyActivity::class.java, false, true) {

    val preferences = ApplicationProvider.getApplicationContext<Application>()
            .getSharedPreferences(NAME, MODE)
    // or getDefaultSharedPreferences(), depends on your app!

    override fun beforeActivityLaunched() {
        preferences.edit().clear().commit()
    }
}

Затем установите правило в своем тесте:

class MyTest {

    @get:Rule val myTestRule = MyActivityTestRule()

    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...