2011-07-12 136 views
3

我想测试一个REST资源:REST资源测试

@GET 
@Path("/{dbName}") 
@Produces(MediaType.APPLICATION_JSON) 
public String getRequest(@PathParam("dbName") String dbName) 
     throws JSONException { 

}

我想这样做:

assert(someExpectedOutput,getRequest()) 

现在怎么路径将为@Path注释设置??

回答

2

如果你要直接打电话getRequest进行测试,作为一个Java方法,正前方去,并将它传递一个字符串:

assertEquals(someExpectedOutput, getRequest("someMockDbName")); 

它毕竟只是一个Java方法有一个字符串参数。

JAX-RS注释仅在运行服务器时启动,在这种情况下,框架将将路径参数与Java参数dbname匹配。我假设测试你只是使用模拟对象,所以不用担心。传递你喜欢的任何字符串。

现在,如果您要在服务器内测试(更像集成测试),请考虑Webty服务器的Jetty和数据库的HSQLDB或Derby。这种测试涉及更多。

+0

这可能有助于进行集成测试:http://www.baeldung.com/2011/10/13/integration-testing-a-rest-api/ – Eugen

1

发现泽西的测试框架(com.sun.jersey.test.framework)也很有用。或者像上面那样做一个正常的junit方式。