【发布时间】:2013-10-16 19:30:57
【问题描述】:
我使用 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]
【问题讨论】:
标签: junit mocking apache-wink