我们将Sonar从版本3.7.x升级到4.1.2升级至4.3.2,我们发现单元测试覆盖率已被破坏。
单位测试覆盖率%字段为空,而单元测试成功显示为100%。
为了测试我设置了Sonar测试实例ver 3.7.4并且报告工作正常。
有什么想法吗?
答案 0 :(得分:0)
几个月后:-)我得到了相同的 - 现在看来你需要明确设置覆盖范围(就像集成测试的failafe插件一样)。
最简单的方法是在你的声纳配置文件中使用jacoco-maven-plugin然后正常离开surefire / failafe插件(即不要在声纳配置文件中覆盖)。注意;如果您在其他任何内容的插件中使用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>