对JAX-RS控制器进行单元测试的最佳方法是什么?

时间:2017-03-30 14:47:37

标签: java rest unit-testing jax-rs

我正在学习图书馆javax.ws.rs所以我写了一个玩具API。

例如,我已经使用了这个POST方法。我已经看到有很多用于测试的库,比如Jersey或Rest Assured,但是,我如何对响应代码为200并且内容为"hello"进行单元测试?

 @POST
     @Path("/getFoo")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
     Foo getFoo(@BeanParam final Foo foo)
    {
            return new Foo("hello");
    }

1 个答案:

答案 0 :(得分:1)

对于Jersey Web服务测试,有几个测试框架,即:Jersey测试框架(https://jersey.java.net/documentation/1.17/test-framework.html)和REST-Assured(https://code.google.com/p/rest-assured) - 在这里看到两者的比较/设置({{3 }})。

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");
    }

}