JBehave для тестирования веб-приложения REST

Я работаю над проектом, который получает данные json через REST и после некоторой обработки отправляет их дальше. т.е. он имеет как HTTP-серверную, так и HTTP-клиентскую части.

Теперь мне сказали добавить к ним интеграционные тесты и предложили использовать Citrus framework. Я вижу, что у него есть модуль citrus-http, но после всех настроек я не очень доволен им, потому что я не хочу писать тесты в XML (хотя и требуется, чтобы они не были написаны в скомпилированном коде).

Так что я начал думать об использовании JBehave, но у меня нет опыта тестирования http с его помощью - и я не мог сразу найти нужные примеры. Кажется, мне нужно запустить http-сервер, отправить некоторые данные с помощью http-клиента и проверить результат на сервере. Но есть ли какие-либо модули или JBehave-дружественная структура для предоставления этой части "http" - или я должен создать их с нуля?


person Rodion Gorkovenko    schedule 24.06.2015    source источник


Ответы (2)


Вы можете использовать WireMock. Это библиотека, которая очень хорошо работает с http-запросами. Вы можете запустить свой сервер WireMock в @BeforeStory, и он начнет запись, а затем выключит его в вашем @AfterStory в вашем классе шагов. Ваш ответ на запрос будет храниться в файле, и с ним будет легко работать.

person lchicoti    schedule 06.07.2015

Ваше предположение, что Citrus поддерживает только XML-тесты, неверно. Citrus также предоставляет Java DSL для написания тестов. Вот пример:

@CitrusTest
public void testHttp() {
    http().client("http://localhost:8080")
            .post()
            .contentType(MediaType.APPLICATION_FORM_URLENCODED)
            .payload("name=Penny&age=20");

    http().client("http://localhost:8080")
            .response(HttpStatus.OK);
}

JBehave — это фреймворк BDD (Behavior Driven Development), который не имеет ничего общего с Http-тестированием. Вы можете комбинировать любую тестовую библиотеку Http с JBehave.

person Christoph Deppisch    schedule 03.03.2016