最初配置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<argLine>-Dfile.encoding=utf-8</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.1</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
sonar 扫描后的单元测试覆盖率为0。但是但与测试数量不为0.
而配置的 sonar :
- 单元测试数基于 maven-surefire-plugin 插件
- 单元测试覆盖率基于 jacoco-maven-plugin 插件。
发现 maven 执行后没有 jacoco.exec 文件。导致 sonar 单元测试覆盖率为 0。并且没有下面的 jacoco 结果文件:jacoco.exec。
查看 jacoco-maven-plugin 文档。发现是 maven-surefire-plugin 的 argLine 参数导致 Jacooco 未执行。 于是按照官方文档在 argLine 参数前添加 @{argLine} ,修复后如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<argLine>>@{argLine} -Dfile.encoding=utf-8</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.1</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
参考:
版权归原作者 1379號监听猿 所有, 如有侵权,请联系我们删除。