我使用 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]