【问题标题】:Code coverage not shown in Sonar when using spring agent + Jacoco + Maven surefire plugin使用 spring agent + Jacoco + Maven surefire 插件时,Sonar 中未显示代码覆盖率
【发布时间】:2015-01-07 17:34:31
【问题描述】:

当我们使用 Jacoco + spring agent + maven surefire 插件时。没有显示 Junit 代码覆盖率统计数据,并且应该通过 spring 代理检测的类也没有被检测。

<plugin>
<groupId> org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4</version>
<configuration>
  <forkMode>once</forkMode>
  <argLine>
    -javaagent:${settings.localRepository}/org/springframework/spring-agent/${spring.version}/spring-agent-${spring.version}.jar -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/1.6.1/aspectjweaver-1.6.1.jar
  </argLine>
  <useSystemClassloader>true</useSystemClassloader>
</configuration>
</plugin>

我们的单元测试用例正在运行,但 Sonar 立方体中未显示 Junit 代码覆盖率报告。 当我们删除 spring 代理并再次运行时,就会生成 Junit 代码覆盖率报告。 所以我们不确定我们哪里出错了以及如何解决这个问题。 我们甚至尝试设置 forcount=1 但没有帮助。

【问题讨论】:

    标签: maven


    【解决方案1】:

    您没有展示整个 pom,但我邀请您使用: jacoco-maven-plugin:prepare-agent 某处。

    jacoco-maven-plugin:prepare-agent 内部设置 argLine 属性,因此当您配置 argLine 时,您只需覆盖它即可。

    页面上描述了一种解决方案: http://www.eclemma.org/jacoco/trunk/doc/prepare-agent-mojo.html

    您可以尝试此解决方案的另一种方法:

    <properties>
       <argLine/> <!-- empty for preventing syntax error in pom -->
    </properties>
    ...
    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-surefire-plugin</artifactId>
       <configuration>
          <argLine>${argLine} ... custom config</argline>
       </configuration>
    </plugin>
    

    【讨论】:

      猜你喜欢
      • 2012-06-11
      • 1970-01-01
      • 2013-02-07
      • 2016-10-02
      • 2016-11-08
      • 2018-05-31
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      相关资源
      最近更新 更多