Тестирование rest java

Хотелось бы узнать,как правильно тестировать rest сервисы.Например,я хочу протестировать post и get методы какого-нибудь сервиса работающего с бд,у него есть post метод для добавления и get для получения объекта. Я создаю объект -> посылаю post запрос c этим объектом,сервис принимает его -> сохраняет его в бд.И по статусу ответа я принимаю решение правильно ли отработал контроллер или нет.Меня смущает,тот факт,что для тестирования запроса,бд приходится производить реальные операции и манипуляции с объектом.В последствии его(тистируемый объект) нужно будет удалить из бд.Правильный ли это подход для post запроса?Так же с get,чтобы понять правильно-ли он работает,я создаю объект с заранее известными параметрами и поллями->посылаю post->принимаю параметры сравниваю каждое поле,чтобы понять тот ли это объект,и принимаю решение,что все верно.Тут же получается,что при тестировании get метода внутри я должен использовать post.Я слышал,что это не хороший подход.Как мне быть в такой ситуации?Буду рад за любую помощь и ресурсы.


Ответы (2 шт):

Автор решения: Alexey R.

Обычно для таких тестов используют чистую базу. Вы генерируете тестовые данные, которые отражают специфику логики сервиса и затем вызываете GET запросы, проверяя все ли поля возвращены корректно.

Для пост-запросов обратный механизм. Возврат сервисом "хорошего" статуса еще не говорит о том, что сама бизнес-логика заранилась корректно. После пост запроса необходимо "залезть" в базу и проверить корректность создания объекта в ней.

После каждого post-теста желательно чистить ту часть схемы базы, которая отвечает за рамещение тестируемых объектов.

P.S. - тестирование GET при помощи POST и наоборот также имеет место быть, однако такие тесты встречаются реже, потому как потенциальная ошибка в функционале POST может привести к фолс-позитив/негатив результатам в тестах для GET и наоборот.

→ Ссылка
Автор решения: Aziz Umarov

Методика тестирования единая для всех. Извиняюсь пишу как я вижу это своими словами.

  1. У Вас есть тестируемый объект. Метод, класс, сервис ....
  2. У Вас есть верный результат или же вы знаете верный результат.
  3. У Вас есть тестируемая среда. Компьютер, доступ к препаратам, подопытные.
  4. Вы тестируете (проводите эксперимент) и проверяете ожидаемое с реальным а. Исходное состояние б. тест с. заключительное состояние д. сверка - заключение

применительно к базам данных если ваш тест предполагает прямая сверка данных с базой данных то это один тест если не предполагает (у вас нет доступа к базе данных) то это другой тест но методика остается.

→ Ссылка