Как лучше всего написать контрольный пример для веб-сервисов JERSEY? - PullRequest
12 голосов
/ 26 мая 2009

У меня есть веб-сервис 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 ]

9 голосов
/ 27 августа 2009

Новая (пересмотренная) среда тестирования 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

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

4 голосов
/ 09 июня 2009

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

Обратите внимание, что вы можете использовать эту среду для запуска своих тестов на обычных веб-контейнерах, таких как GlassFish и Tomcat. Если у вас есть еще вопросы, пожалуйста, отправьте мне или список рассылки пользователей Джерси - users@jersey.dev.java.net электронное письмо.

2 голосов
/ 28 мая 2009

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

1 голос
/ 28 мая 2009

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

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

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

0 голосов
/ 07 июля 2009

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

0 голосов
/ 29 мая 2009

Рассматривали ли вы использование Jersey Test Framework ? К сожалению, это все еще более интеграционный тест, чем модульный тест, но он может помочь вам в этом.

...