小编典典

单元测试球衣Restful Services

json

我是单元测试的新手,我想测试项目中的某些球衣服务。我们正在使用Junit。请指导我以更好的方式编写测试用例。

码:

    @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格式。

注意: 我们使用的是Jersey 1.17.1版本。

帮助将不胜感激:)


阅读 206

收藏
2020-07-27

共1个答案

小编典典

对于Jersey Web服务测试,有几个测试框架,分别是:Jersey Test Framework(已经在其他答案中提及-
请在此处查看版本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-you-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/。

HTH。

2020-07-27