Как обеспечить воспроизводимость интеграционного теста на эмуляторе Android?
Здравствуйте!
Как лучше обеспечить одинаковые начальные условия при запуске интеграционных(?) тестов на эмуляторе Android?
Допустим тестирование Contacts Provider, тесты отправляют запросы провайдеру, делают вставки и удаления. В итоге, от теста к тесту состояние адресной книги Android меняется, возможно накапливаются ошибки в БД системы. Как лучше обеспечить запуск тестов в одном и том же окружении?
Пока я делаю сброс на определенный Snapshot эмулятора. А есть ли другие варианты? Или это вообще неверный подход?
Да, спасибо, читал это, тут про то, как тестировать свой Content Provider. А мне надо тестировать как мое приложение влияет на системный Content Provider.
Роман А какая компонента является предметом теста? если вы проверяете интеграцию приложения с адресной книгой и тесты приводят адресную книгу в негодность - значит вы нашли баг. Если вам адресная книга нужна просто как источник данных, то наверное надо ее замокать.
Alexej Simakov, да, выборочная синхронизация книги с приложением. Адресная книга именно как объект воздействия интересует, и в первую очередь, как её от теста к тесту возвращать в исходное состояние (сейчас делаю восстановление снэпшота из командной строки). Просто я подумал и поискал какой-нибудь механизм/фреймоворк, который делает "песочницу" внутри Андроид, где весь API соответственно работает как в "жизни", но изменения живут только во время жизни теста.
В общем, пока попробую ограничиться тестами на Robolectric. Это быстрее, понятнее и в принципе, если запросы для разных сценариев формируются правильно, то интеграционных тестов вообще много не потребуется.