使用Sonar对Jenkins进行spring-test-mvc的问题

时间:2012-04-18 08:38:22

标签: unit-testing spring-mvc jenkins sonarqube

我最近发现了用于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()));

在上面的测试中,内容类型和会话属性断言失败。 有任何想法吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

问题是由来自spring-mvc的善良的人解决的。可以在提供的link上找到更多详细信息。简而言之,在我的案例中,Sonar使用Cobertura进行覆盖测试。

  

Cobertura添加了界面HasBeenInstrumented,因此   该类被装饰为JDK动态代理,这意味着一个   具有一个接口的合成代理类,因为它不是很有用   它是Cobertura标记界面。结果,控制器可以   从来没有,没有正确发现的注释。

通过将proxy-target-class="true"添加到<tx:annotation-driven>元素

来解决问题

答案 1 :(得分:0)

我也面临同样的问题。我们将Cobertura jar版本升级到最新版本。此更改使JUnit测试用例在本地和Jenkins中运行