【发布时间】:2014-10-06 08:44:04
【问题描述】:
我们将 Sonar 从版本 3.7.x 升级到 4.1.2 再到 4.3.2,我们发现单元测试覆盖率已损坏。
单元测试覆盖率 % 字段为空,而单元测试成功显示为 100%。
为了进行测试,我设置了一个声纳测试实例版本 3.7.4,报告工作正常。
有什么想法吗?
【问题讨论】:
标签: sonarqube
我们将 Sonar 从版本 3.7.x 升级到 4.1.2 再到 4.3.2,我们发现单元测试覆盖率已损坏。
单元测试覆盖率 % 字段为空,而单元测试成功显示为 100%。
为了进行测试,我设置了一个声纳测试实例版本 3.7.4,报告工作正常。
有什么想法吗?
【问题讨论】:
标签: sonarqube
几个月后 :-) 我得到了同样的结果 - 看来您现在需要显式设置覆盖范围(就像用于集成测试的故障安全插件一样)。
最简单的方法是在您的声纳配置文件中使用 jacoco-maven-plugin,然后将surefire/failsafe 插件保持正常(即不要在声纳配置文件中覆盖)。笔记;如果您在任一插件中使用 argLine 来处理其他内容,请将其指定为 <argLine>${argLine} -your -extra -arguments</argLine>。只需在单元和集成中添加以下内容即可:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.2.201409121644</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-prepare-agent-integration</id>
<goals>
<goal>prepare-agent-integration</goal>
</goals>
</execution>
</executions>
</plugin>
不太受欢迎的选择
我首先让单元覆盖以与我之前使用故障安全(使用 argLine 和对 jacoco 的依赖)相同的有点笨拙的方式工作,其中:
<properties>
<version.jacoco>0.7.2.201409121644</version.jacoco>
<sonar.jacoco.reportPath>${project.basedir}/target/report/jacoco-unittest.exec</sonar.jacoco.reportPath>
<sonar.jacoco.itReportPath>${project.basedir}/target/report/jacoco-integrationtest.exec</sonar.jacoco.itReportPath>
</properties>
和:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<argLine>-javaagent:${settings.localRepository}/org/jacoco/org.jacoco.agent/${version.jacoco}/org.jacoco.agent-${version.jacoco}-runtime.jar=destfile=${sonar.jacoco.reportPath}</argLine>
<parallel>false</parallel>
<testFailureIgnore>false</testFailureIgnore>
<excludes>
<exclude>**/*IntegrationTest.java</exclude>
</excludes>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
<dependencies>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.agent</artifactId>
<version>${version.jacoco}</version>
<classifier>runtime</classifier>
<optional>false</optional>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
【讨论】: