2011-07-12 135 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方式。