我是单元测试的新手,我想测试项目中的某些球衣服务。我们正在使用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格式。
List<Product>
注意: 我们使用的是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-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。