Подтвердить что ты не робот

Каков наилучший способ написать тестовый пример для веб-служб 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?
}
4b9b3361

Ответ 1

Новая (пересмотренная) тестовая платформа Jersey, которая является частью версии Jersey 1.1.2-ea, теперь поддерживает тестирование In-Process или In-Memory. Для запуска ваших тестов в памяти все, что вам нужно сделать, это установить свойство 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

Для получения более подробной информации перейдите в запись в блоге под названием Испытательная платформа Джерси, повторно посещенная! на http://blogs.oracle.com/naresh.

Ответ 2

Я считаю, что Jersey Test Framework обеспечивает решение для вашего требования. Он позволяет развернуть единую службу и выполнить все ее тесты. Вы можете использовать фреймворк для запуска своих тестов против Grizzly Web Container, Embedded GlassFish и/или HTTPServer.

Обратите внимание, что вы можете использовать фреймворк для запуска своих тестов против обычных веб-контейнеров, таких как GlassFish и Tomcat. Если у вас возникнут какие-либо вопросы, вы можете отправить мне или почтовому списку пользователей Джерси - [email protected] письмо.

Ответ 3

Я не пробовал, но расширение JUnit, такое как HtmlUnit или HttpUnit, может быть хорошим способом протестировать сервис JAX-RS/Jersey. В тестовом примере XPaths можно найти ожидаемые возвращаемые значения и проверить возвращаемое значение по отношению к ожидаемому. См. http://htmlunit.sourceforge.net/gettingStarted.html для получения дополнительной информации.

Ответ 4

Вы можете использовать Grizzly для размещения сервисов, а затем использовать клиент Джерси для доступа к ним. Взгляните на примеры приложений. Например, в образце Bookstore вы можете найти класс TestSupport и класс JerseyTest (найденный в рамках jersey-test-framework), представляющий особый интерес.

Надеюсь, это поможет.

(К сожалению, переполнение стека не позволило мне опубликовать сообщение, пока я не удалю все гиперссылки так счастливыми Google!).

Ответ 5

Вы заглянули в использование Схема тестирования Джерси? К сожалению, это еще более сложный тест, чем unit test, но он может помочь вам.

Ответ 6

Хорошо, я понял это сейчас. В настоящий момент структура не поддерживает IN PROCESS, и мы над этим работаем. Мы увидим, что эта поддержка будет добавлена ​​в будущую версию тестовой платформы Джерси.