我使用Jenkins pipeline为一个Sping Boot 应用程序开发了一些JUnit测试,SonarQube上的覆盖率仍然是0%(我相信这可能是我的脚本或pom.xml的问题)
Jenkins上安装的插件:Sonargraph + Sonarqube +代码覆盖API + Jacoco插件这是我得到的警告
[INFO] Tests run: 19, Failures: 0, Errors: 0, Skipped: 0
[INFO] --- jacoco-maven-plugin:0.8.6:report (report) @ achat ---
[INFO] Skipping JaCoCo execution due to missing execution data file.
[INFO] BUILD SUCCESS
下面是我的Jenkins声纳声明脚本阶段:
sh ' mvn sonar:sonar -Dsonar.sources=src/main/java -Dsonar.css.node=.
-Dsonar.java.binaries=. -Dsonar.host.url=http://192.168.2.2:9000/
-Dsonar.login=admin -Dsonar.password=sonar -Dsonar.jacoco.reportPath=build/reports/jacoco.xml'
下面是我在Jenkins的测试阶段:
sh ' mvn test'
jacoco execPattern: 'target/jacoco.exec'
pom.xml中的属性
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.0</maven-jar-plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<sonar.surefire.reportsPath>${basedir}/target/surefire-reports</sonar.surefire.reportsPath>
<sonar.coverage.jacoco.xmlReportPaths>${basedir}/target/jacoco_report/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
</properties>
pom.xml中的插件
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.6</version>
<executions>
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<outputDirectory>${jacoco.path}</outputDirectory>
</configuration>
</execution>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
<propertyName>surefireArgLine</propertyName>
<argLine>${surefireArgLine}</argLine>
</configuration>
</execution>
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
<outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
1条答案
按热度按时间enxuqcxy1#
我希望jacoco和surefire插件必须在哪里找到数据文件以及文件名上达成一致,这一点很清楚,但它们没有达成一致,这也是为什么这个插件不起作用的原因。
此外,对于最近的插件版本,您可能应该使用xml格式的数据文件,而不是二进制版本。在您当前的配置中,它们不仅在位置上不一致,一个插件指定二进制格式,而另一个插件指定xml格式。
我建议您具有如下属性设置:
在Jacoco插件中,确保您有:
Surefire插件在“配置”块中需要此信息: