我最近发现了一个用于MVC测试的Spring项目:spring-test-mvc。这是一个很棒的工具,我计划在未来更多地使用它。
然而,我在我的Jenkins CI上发现了一个问题。问题是,当MVC集成测试在本地通过时,甚至在Jenkins CI作业上,问题发生在Jenkins的Sonar插件执行中。在这种情况下,我尝试使用".andExpect()“方法完成的所有断言都失败了。是的,如果没有使用Sonar插件,它们会通过。
例如
this.mockMvc.perform(get("/someController/some.action").param("someParam", "someValue"))
.andExpect(status().isOk())
.andExpect(content().type(MediaType.APPLICATION_JSON))
.andExpect(request().sessionAttribute("someAttribute", notNullValue()));在上面的测试中,内容类型和会话属性断言都失败了。有什么想法吗?提前谢谢。
发布于 2012-05-16 15:40:07
spring-mvc的好心人解决了这个问题。可以在提供的link上找到更多详细信息。简而言之,在我的例子中,Sonar使用Cobertura进行覆盖测试。
JDK添加了接口HasBeenInstrumented,因此该类被装饰为
动态代理,这意味着只有一个接口的合成代理类没有太大帮助,因为它是Cobertura标记接口。因此,控制器永远不能,也没有注解可以被正确发现。
通过在<tx:annotation-driven>元素中添加proxy-target-class="true"来解决这个问题
发布于 2016-07-13 03:03:21
我也面临着同样的问题。我们将Cobertura jar版本升级到最新版本。这一更改使得JUnit测试用例既可以在本地运行,也可以在Jenkins中运行
https://stackoverflow.com/questions/10205775
复制相似问题