我最近发现了用于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()));
在上面的测试中,内容类型和会话属性断言失败。 有任何想法吗?提前谢谢。
答案 0 :(得分:0)
问题是由来自spring-mvc的善良的人解决的。可以在提供的link上找到更多详细信息。简而言之,在我的案例中,Sonar使用Cobertura进行覆盖测试。
Cobertura添加了界面
HasBeenInstrumented
,因此 该类被装饰为JDK动态代理,这意味着一个 具有一个接口的合成代理类,因为它不是很有用 它是Cobertura标记界面。结果,控制器可以 从来没有,没有正确发现的注释。
通过将proxy-target-class="true"
添加到<tx:annotation-driven>
元素
答案 1 :(得分:0)
我也面临同样的问题。我们将Cobertura jar版本升级到最新版本。此更改使JUnit测试用例在本地和Jenkins中运行