Как лучше всего написать контрольный пример для веб-сервисов 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? К сожалению, это все же больше интеграционный тест, чем модульный тест, но он может помочь вам в этом.

Другие вопросы по тегам