我使用Apache Wink 1.2.1。我想單元測試我的REST服務,我寧願不使用RestClient。我還沒有找到任何例子,但經過大量搜索後,我猜想MockServletInvocationTest是正確的起點......但是我一直無法使它工作。使用MockServletInvocationTest測試Apache Wink REST服務單元測試
這是一個最小的例子,我失敗了。
我的REST服務:
@Path("greetings")
public class GreetingsResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Hello World!";
}
}
相應的單元測試:
public class GreetingsResourceTest extends MockServletInvocationTest {
@Override
protected Class<?>[] getClasses() {
return new Class<?>[] { GreetingsResource.class };
}
public void testHello() throws ServletException, IOException {
MockHttpServletRequest request = MockRequestConstructor.
constructMockRequest("GET", "/greetings", MediaType.TEXT_PLAIN);
MockHttpServletResponse response = invoke(request);
assertEquals(200, response.getStatus());
}
}
所以,我有幾個問題:
我在錯誤的方向前進?
如果我要走向正確的方向,那麼我做錯了什麼?當執行之前的測試情況下,我得到以下錯誤(我真不明白):
java.lang.NoSuchMethodError: javax/servlet/http/HttpServletResponse.getContentType()Ljava/lang/String; at org.apache.wink.server.internal.handlers.FlushResultHandler$FlushHeadersOutputStream.flushHeaders(FlushResultHandler.java:350) ~[wink-server-1.2.1-incubating.jar:1.2.1-incubating]
你是怎麼弄出依賴錯誤的? 'maven樹'? – 2014-06-29 09:31:50
@bubuzzz:我真的不記得我是怎麼想出來的......我猜是因爲我很絕望,而且我開始瀏覽所有的Maven依賴關係樹。 – MarcoS 2014-06-30 10:53:21