gpt4 book ai didi

java - 单元测试 Jersey Restful Services

转载 作者:IT老高 更新时间:2023-10-28 12:51:14 27 4
gpt4 key购买 nike

我是单元测试的新手,我想在一个项目中测试一些 Jersey 服务。我们正在使用 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 测试用例来测试上述方法。上述方法将以 JSON 格式检索产品列表 (List<Product>)。我想写一个测试用例来检查响应状态和json格式。

注意:我们使用的是 Jersey 1.17.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-your-restful-web-services/)。

我发现 REST-Assured 更有趣、更强大,但 Jersey 测试框架也非常易于使用。在 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。

关于java - 单元测试 Jersey Restful Services,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21413738/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com