Apache Wink 1.2.1 を使用しています。REST サービスの単体テストを行いたいのですが、RestClientを使用せずに実行したいと考えています。例は見つかりませんでしたが、多くの検索を行った後、MockServletInvocationTestが正しい出発点であると推測しました...しかし、私はそれを機能させることができませんでした。
これは私にとって失敗する最小限の例です。
私の 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; org.apache.wink.server.internal.handlers.FlushResultHandler$FlushHeadersOutputStream.flushHeaders(FlushResultHandler.java:350) で ~[wink-server-1.2.1-incubating.jar:1.2.1-incubating]