С AndroidX Test Framework теперь мы можем запустить Espresso test как модульный тест с использованием Robolectri c backend. Но я запутался, когда использовать инструментальный тест, а когда использовать модульный тест.
Допустим, у нас есть два экрана: MovieListActivity и MovieDetailActivity . когда я нажимаю на элемент в MovieListActivity , подробности этого mov ie будут отображаться в MovieDetailActivity .
Теперь с этим сценарием, что может быть возможные юнит-тесты и какие могут быть возможные инструментальные тесты?
Например, я могу написать инструментальный тест для
- Проверить, есть ли фильмы в списке
- Нажатие на mov ie переходит к подробному экрану
- Подробный экран отображает подробности правильно.
но теперь эти тесты также можно запускать как модульные тесты (так как мы используя Android X Test Framework), плюс это быстрее, так как мы не проводим тест в устройстве / эмуляторе. Итак, что делает тест пригодным для инструментального теста?
Что если я хочу выполнить тест как модульный тест, так и инструментальный тест?
Поскольку мы используем Android X Test Framework этот же файл модульного теста можно запустить как инструментальный тест, скопировав файл в папку androidTest
. Это делает дубликат файла и усложняет обслуживание тестового примера. (Например, если я выполняю редактирование в папке устройства test
, то же самое изменение должно быть сделано в файле androidTest
.)
- Можно ли пометить тест для запуска как и инструментальный тест, и модульный тест?
- Если это плохая практика, какие из лучших и какие другие рекомендации следует учитывать при использовании Android X Test Framework?