Тестирование RestAssured без запуска Tomcat

У меня есть веб-служба REST, которую необходимо протестировать. Я использую Mockito для имитации классов DAO и RestAssured для тестирования методов REST через URI. Есть ли способ протестировать службу REST, не запуская ее отдельно с Tomcat? Или как запустить приложение на Tomcat с издевательскими классами перед тестовыми примерами?


person Justinas Jakavonis    schedule 29.03.2016    source источник


Ответы (1)


Существует руководство, в котором показано, как использовать maven для запуска встроенного экземпляра tomcat и запускать тесты для вашей службы с помощью RestAssured:

http://www.hascode.com/2011/09/rest-assured-vs-jersey-test-framework-testing-your-restful-web-services/

Вы запускаете tomcat в одной оболочке и запускаете тесты в другой.

Тем не менее, я настоятельно рекомендую использовать трикотажную тестовую среду, которая прозрачно запускает встроенный контейнер. В этом случае вы бы вообще не использовали RestAssured, а использовали бы тестовый клиент Джерси. Ваши тесты будут выполняться быстрее и с меньшими усилиями. Это хорошо задокументировано здесь: https://jersey.github.io/documentation/latest/test-framework.html. В учебнике также демонстрируется этот подход, хотя мне не кажется, что клиент построен правильно.

В прошлом я также тестировал ресурсы REST, напрямую вызывая методы реализующего класса. Хотя это не проверяет правильное сопоставление параметров/тела http-запроса с параметрами метода java, часто этого было достаточно (особенно когда я также кодирую код на стороне клиента).

person Robert Moskal    schedule 29.03.2016
comment
Это сработало, спасибо. Осталась только 1 проблема - ExceptionMapper не вызывается во время теста Джерси. - person Justinas Jakavonis; 30.03.2016
comment
Я бы открыл еще один вопрос по этому вопросу. - person Robert Moskal; 30.03.2016
comment
Уже решено: stackoverflow.com /вопросы/36308419/. Просто нужно было зарегистрировать мой ExceptionMapper в общедоступной конфигурации ResourceConfig(). - person Justinas Jakavonis; 30.03.2016
comment
Karate поддерживает тестирование REST без запуска Tomcat, и самое приятное то, что одни и те же тесты можно повторно использовать как обычные тесты интеграции HTTP: github.com/intuit/karate/tree/master/karate-mock-servlet - person Peter Thomas; 02.09.2017