Могу ли я получить инструментальный тест, чтобы убить и перезапустить процесс приложения?

Мне нужно протестировать вариант использования, когда приложение запускается из чистого состояния, т. е. процесс не запускался до начала теста. Из того, что я вижу из logcat, все инструментальные тесты выполняются в рамках одного экземпляра/сеанса процесса, поэтому результат теста в моем случае зависит от того, работает ли он как #1 или нет. Так быть не должно — как мы все знаем, юнит-тесты (или инструментальные тесты) должны быть автономными.

Есть ли способ со стандартными инструментами и функциями тестирования инструментов Android заставить TestRunner перезапустить процесс перед данным тестом? Если нет, есть ли хаки или сторонние библиотеки, которые могут помочь мне в этом? Или я могу каким-то образом сказать, что тест X должен запускаться первым (худший вариант, но все же)?

В частности, мой тест относится к запуску действий через намерения, а флаги намерений (например, FLAG_ACTIVITY_CLEAR_TOP) в дополнение к режиму запуска действия (например, singleTop) и состоянию процесса во многом определяют результат теста.


person Nilzor    schedule 23.09.2015    source источник
comment
Вы нашли какое-нибудь решение для этого?   -  person ImMathan    schedule 24.05.2017
comment
Вы хотите перезапустить приложение из теста эспрессо?   -  person Dipankar Baghel    schedule 12.02.2020
comment
Было бы для вас решением убить и перезапустить процесс приложения для каждого теста?   -  person Giorgio Antonioli    schedule 09.04.2020


Ответы (1)


Предполагая, что вы работаете с эспрессо, нет простого способа осуществить это. Это связано с тем, что Espresso работает в том же процессе, что и приложение, и поэтому удаление приложения приведет к уничтожению Espresso.

Вопрос в том, нужна ли вам вся логика, которую вы хотите выполнить, в вашем Application, или ее можно перенести в ваш Activity.onCreate()? С эспрессо перезапуск Activity возможен. Если есть необходимость перезапустить приложение из-за глобальных/синглетонов, может потребоваться их удаление. Если это невозможно сделать, вы можете посмотреть другие среды автоматизации тестирования, такие как Appium. который имеет некоторую поддержку для этого.

person ThisCompSciGuy    schedule 13.06.2020