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

У меня есть веб-сервис JAX-RS, реализованный с библиотекой Restlet, и теперь я хочу его протестировать. Для этого я бы хотел разместить этот сервис в своем тесте, предварительно инициализировав его с помощью фиктивных сервисов.

Каков наилучший способ размещения такой службы и выполнения тестовых вызовов?

@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?
}

Ответы [ 2 ]

1 голос
/ 13 июля 2010

@ см. http://www.restlet.org/documentation/1.1/firstSteps#part04

Вы должны иметь возможность запускать службу Restlet встроенным способом и использовать apache HttpClient для вызова методов. Я сделал это, и это довольно просто.

0 голосов
/ 04 июня 2009

Restlet позволяет вам запускать ваши веб-сервисы на различных серверных «коннекторах», и довольно легко переключаться с одного сервера на другой. Мы обычно запускаем наши веб-сервисы на кластере серверов приложений Sun Glassfish Java EE, но для их тестирования мы используем соединитель, который связывается с Simple HTTP Server для запуска веб-сервисов в качестве отдельного приложения. Также имеются разъемы для серверов AsyncWeb, Jetty, Grizzly и внутреннего HTTP-сервера.

На стороне клиента вы должны рассмотреть клиентскую библиотеку Restlet. Он довольно лаконичен и хорошо сочетается с серверами Restlet. Мы используем коннектор Apache HTTP Client.

Для тестирования мы создали класс Fetcher. Это реализовано с помощью клиентского API Restlet. Чтобы использовать его, вы в значительной степени вызываете метод fetch ():

DTO person = fetch("/employee/1234");
DTO department = fetch("/department/" + person.getDepartment());

Fetch () прикрепляет указанное имя ресурса к базовому URI веб-служб (скажем, "http://localhost:8182"), использует клиентский API Restlet для извлечения представления XML, затем десериализует извлеченный XML в объект передачи данных ( POJO).

Вы видите, что это действительно делает модульное тестирование довольно простым. Перед модульными тестами вы запускаете веб-сервисы на отдельном сервере, таком как Simple или Jetty. Во время модульных тестов вы выбираете DTO, деревья DOM, объекты json.org или что-либо еще с помощью Fetcher, а затем применяете тестовые утверждения к тому, что было возвращено. Если вам нужно провести тестирование на более детальном уровне, вы можете напрямую использовать код клиента Restlet.

...