Junit 使用MockServletinLocationTest对Apache Wink REST服务进行单元测试
我使用ApacheWink1.2.1。我想对我的REST服务进行单元测试,我宁愿不使用。我还没有找到任何例子,但经过大量的搜索,我猜这是正确的起点。。。然而,我一直无法使它工作 这里有一个对我来说失败的小例子 我的休息服务:Junit 使用MockServletinLocationTest对Apache Wink REST服务进行单元测试,junit,mocking,apache-wink,Junit,Mocking,Apache Wink,我使用ApacheWink1.2.1。我想对我的REST服务进行单元测试,我宁愿不使用。我还没有找到任何例子,但经过大量的搜索,我猜这是正确的起点。。。然而,我一直无法使它工作 这里有一个对我来说失败的小例子 我的休息服务: @Path("greetings") public class GreetingsResource { @GET @Produces(MediaType.TEXT_PLAIN) public String hello() { ret
@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());
}
}
公共类GreetingsResourceTest扩展了MockServletinLocationTest{
@凌驾
受保护类[]getClasses(){
返回新类[]{GreetingsResource.Class};
}
public void testHello()引发ServletException,IOException{
MockHttpServletRequest=MockRequestConstructor。
constructMockRequest(“GET”、“/greetings”、MediaType.TEXT\u PLAIN);
MockHttpServletResponse=invoke(请求);
assertEquals(200,response.getStatus());
}
}
因此,我有几个问题:
我发现了我的问题所在,我只是在这里留下了一张便条,以防有人有同样的问题 这就是为什么我得到了
NoSuchMethodError
:
- 我用它来处理依赖关系
- 为了使用
和MockHttpServletRequest
I包含了对SpringMock 2.0.8的依赖:MockHttpServletResponse
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-mock</artifactId> <version>2.0.8</version> <scope>test</scope> </dependency>
org.springframework 春季模拟 2.0.8 测试
- 不幸的是,spring mock 2.0.8依赖于commons logging 1.1,而commons logging 1.1又依赖于servlet api 2.3,其中
不存在!该方法自ServletAPI 2.4以来就存在javax/servlet/http/HttpServletResponse.getContentType()Ljava/lang/String
所以,为了解决我的问题,我简单地通过范围测试向ServletAPI2.4添加了一个显式依赖项!现在我的单元测试工作没有问题了 我发现了我的问题所在,我只是在这里留下了一张便条,以防有人有同样的问题 这就是为什么我得到了
NoSuchMethodError
:
- 我用它来处理依赖关系
- 为了使用
和MockHttpServletRequest
I包含了对SpringMock 2.0.8的依赖:MockHttpServletResponse
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-mock</artifactId> <version>2.0.8</version> <scope>test</scope> </dependency>
org.springframework 春季模拟 2.0.8 测试
- 不幸的是,spring mock 2.0.8依赖于commons logging 1.1,而commons logging 1.1又依赖于servlet api 2.3,其中
不存在!该方法自ServletAPI 2.4以来就存在javax/servlet/http/HttpServletResponse.getContentType()Ljava/lang/String
所以,为了解决我的问题,我简单地通过范围测试向ServletAPI2.4添加了一个显式依赖项!现在我的单元测试工作没有问题了 您是如何发现依赖项错误的
maven tree
?@bubuzzz:我真的不记得我是怎么想出来的:)。。。我猜是因为我绝望了,我开始浏览所有Maven依赖关系树。你是如何发现依赖关系错误的maven tree
?@bubuzzz:我真的不记得我是怎么想出来的:)。。。我猜是因为我绝望了,我开始浏览所有Maven依赖树。