Я работаю над проектом с двумя приложениями: Android-приложение (клиент) и сервис отдыха (сервер). Мое приложение для Android использует мой сервис для отдыха.
Оба приложения тестируются отдельно, чтобы убедиться, что они делают свой бизнес так, как ожидалось. Во время серверных тестов я готовлю запросы и проверяю ответы сервера. Во время клиентских тестов я настраивал простой HTTP-mock-сервер и тестировал клиентские запросы против разных посмеиваемых ответов.
Теперь эта техника работает очень хорошо. Мне это нравится. Я могу использовать различные тестовые среды и среды непрерывной интеграции. Но есть одна слабость. В обоих (клиентских и серверных) случаях я указываю один и тот же api. Я предполагаю, что, например,
GET /foo-list.json
вернет HTTP 200 с помощью json
[{
id: 1,
name: foo1,
}, {
id: 2,
name: foo2
}]
Итак, повторяю. Если я изменю формат ответа, мои тесты клиента не будут терпеть неудачу.
Мой вопрос касается хороших практик при тестировании такого сценария. Как сделать настоящие интеграционные тесты, не жертвуя гибкостью независимых тестов. Должен ли я тестировать клиента с издеваемым сервером или с реальным экземпляром моего сервиса отдыха?
Поделитесь своим опытом.