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

Восстановительные услуги

Я новичок в модульном тестировании, и я хочу проверить некоторые трикотажные услуги в проекте. Мы используем Junit. Пожалуйста, помогите мне лучше написать тестовые примеры.

CODE:

    @GET
    @Path("/getProducts/{companyID}/{companyName}/{date}")
    @Produces(MediaType.APPLICATION_JSON)
    public Object getProducts(@PathParam("companyID") final int companyID,
            @PathParam("date") final String date, @PathParam("companyName") final String companyName)
            throws IOException {
        return productService.getProducts(companyID, companyName, date);
    }

Вышеупомянутая служба работает нормально, и я хочу написать тестовый пример junit для тестирования вышеупомянутого метода. Вышеуказанный метод будет извлекать список продуктов (List<Product>) в формате JSON. Я хотел бы написать тестовый пример, чтобы проверить статус ответа и формат json.

ПРИМЕЧАНИЕ: Мы используем версию Джерси 1.17.1.

Помощь будет оценена:)

4b9b3361

Ответ 1

Для тестирования веб-сервисов в Джерси существует несколько тестовых рамок, а именно: тестовая платформа Джерси (уже упомянутая в другом ответе - см. здесь документацию для версии 1.17 здесь: https://jersey.java.net/documentation/1.17/test-framework.html) и REST-Assured (https://code.google.com/p/rest-assured) - см. здесь сравнение/настройку обоих (http://www.hascode.com/2011/09/rest-assured-vs-jersey-test-framework-testing-your-restful-web-services/).

Я считаю, что REST-Assured более интересный и мощный, но Jersey Test Framework очень проста в использовании. В REST-Assured для написания тестового примера "для проверки статуса ответа и json-формата" вы можете написать следующий тест (очень похожий на jUnit):

package com.example.rest;

import static com.jayway.restassured.RestAssured.expect;
import groovyx.net.http.ContentType;

import org.junit.Before;
import org.junit.Test;

import com.jayway.restassured.RestAssured;

public class Products{

    @Before
    public void setUp(){
        RestAssured.basePath = "http://localhost:8080";
    }

    @Test
    public void testGetProducts(){
        expect().statusCode(200).contentType(ContentType.JSON).when()
                .get("/getProducts/companyid/companyname/12345088723");
    }

}

Это должно сделать трюк для вас... вы также можете проверить отдельные элементы JSON очень легко и много других деталей. Инструкции по дополнительным функциям вы можете проверить очень хорошее руководство от REST-Assured (https://code.google.com/p/rest-assured/wiki/Usage). Еще один хороший учебник - это http://www.hascode.com/2011/10/testing-restful-web-services-made-easy-using-the-rest-assured-framework/.

НТН.

Ответ 2

Просто игнорируйте аннотации и записывайте обычный unit test, который передает требуемые параметры. Возврат, который, как я думал, обычно имеет тип "javax.ws.rs.core.Response"... Существует метод getEntity(), который можно использовать. Использование среды Mock-объекта, например Mockito, может быть полезным и в этом случае.

Ответ 3

Вы знакомы с Глава 22. Схема тестирования на Джерси?

public class SimpleTest extends JerseyTest {

    @Path("hello")
    public static class HelloResource {
        @GET
        public String getHello() {
            return "Hello World!";
        }
    }

    @Override
    protected Application configure() {
        return new ResourceConfig(HelloResource.class);
    }

    @Test
    public void test() {
        final String hello = target("hello").request().get(String.class);
        assertEquals("Hello World!", hello);
    }
}