Как лучше всего написать контрольный пример для веб-сервисов JERSEY?
У меня есть веб-сервис JAX-RS, реализованный с помощью библиотеки Джерси, и теперь я хочу его протестировать. Для этого я бы хотел разместить этот сервис в своем тесте, предварительно инициализировав его с помощью фиктивных сервисов.
Каков наилучший способ размещения такого сервиса и выполнения тестовых вызовов?
@Path("/srv")
public class MyService
{
@GET
public void action(@Context UriInfo uri)
{ ... }
}
@Test
public void myTest()
{
MyService service = new MyService();
service.setSomething(...);
// How do I host it?
// How do I call it?
}
6 ответов
Новая (пересмотренная) среда тестирования Jersey, которая является частью выпуска Jersey 1.1.2-ea, теперь поддерживает тестирование в процессе или в памяти. Для запуска тестов в памяти все, что вам нужно сделать, это установить для свойства test.containerFactory значение com.sun.jersey.test.framework.spi.container.inmemory.InMemoryTestContainerFactory, т. Е. Запустить тесты следующим образом:
mvn clean test -Dtest.containerFactory = com.sun.jersey.test.framework.spi.container.inmemory.InMemoryTestContainerFactory -DenableLogging
Для получения более подробной информации, пожалуйста, просмотрите статью блога под названием Jersey Test Framework, которую вы посетили снова! на http://blogs.oracle.com/naresh.
Я считаю, что тестовая среда Джерси предлагает решение для ваших требований. Это позволяет вам развернуть один сервис и запустить все его тесты. Вы можете использовать эту среду для запуска своих тестов на Grizzly Web Container, Embedded GlassFish и / или HTTPServer.
Обратите внимание, что вы можете использовать эту среду для запуска своих тестов на обычных веб-контейнерах, таких как GlassFish и Tomcat. Если у вас есть еще вопросы, пожалуйста, отправьте мне или список рассылки пользователей Джерси - users@jersey.dev.java.net электронное письмо.
Я не пробовал, но расширение JUnit, такое как HtmlUnit или HttpUnit, может быть хорошим способом протестировать сервис JAX-RS/Jersey. В тестовом примере можно использовать XPath для поиска ожидаемых возвращаемых значений и проверки возвращаемого значения по сравнению с ожидаемым. Смотрите: http://htmlunit.sourceforge.net/gettingStarted.html для получения дополнительной информации.
Вы можете использовать Grizzly для размещения сервисов, а затем использовать клиент Джерси для доступа к ним. Посмотрите на примеры приложений. Например, в образце Bookstore вы можете найти класс TestSupport и класс JerseyTest (найденный в jersey-test-framework), представляющий особый интерес.
Надеюсь, это поможет.
(К сожалению, переполнение стека не позволяло мне публиковать сообщения, пока я не удалил все гиперссылки, поэтому я так рад Google!).
Хорошо, теперь я понял. Прямо сейчас фреймворк не поддерживает IN PROCESS, но мы работаем над этим. Мы увидим, что эта поддержка будет добавлена в следующей версии Jersey Test Framework
Вы рассматривали возможность использования тестовой структуры Jersey? К сожалению, это все же больше интеграционный тест, чем модульный тест, но он может помочь вам в этом.