Какие автотесты вообще бывают?
Часть 2: Интеграционные тесты
Нужны для проверки правильного взаимодействия разных слоёв/модулей. К примеру, можно протестировать связку Repository → UseCase, или связку Repository → UseCase → Presenter → View. Все остальные слои/модули, которые не проверяются в этом интеграционном тесте, подменяются.
Важно понимать, что интеграционный тест не тестирует UI - этим занимаются UI-тесты, но при этом, в отличие от Unit-тестов, он может исполняться в классах, зависящих от платформы.
В случае android, в этом помогает Roboelectric - быстрый симулятор android на JVM и собственными заглушками (shadows) для классов из android. Также через Roboelectric можно для каждого теста указать target sdk и проводить многие другие манипуляции с платформой.
Интеграционные тесты исполняются медленнее, чем юнит-тесты, поскольку у них больше зависимостей (особенно если используют Roboelectric), и их имеет смысл запускать пореже, например - при каждой отправке коммита в репозиторий.
Их сложнее начать писать (потому что с робоэлектриком надо ещё помудохаться), да и в целом писать их не так просто, как юниты.
Однако, они при этом куда полезнее и куда более приближены к реальности, чем изолированные юниты. Порой компании забивают на юниты и пишут только интеграционные, потому что они проверяют хоть какие-то конкретные кейсы, а не просто бизнес-логику как таковую.
Post #146
675
- 🔥 5
- 👍 1