问题描述
我有一个使用jacoco-maven-plugin
配置的多模块Maven项目(这不相关)。据我了解,jacoco插件负责通过生成二进制jacoco*.exec
文件来分析代码。它还负责生成将由Sonar通过sonar-maven-plugin
导入的报告(jacoco.xml)。
jacoco-maven-plugin
的配置如下。 prepare-agent
和prepare-agent-integration
目标为单元测试和集成测试设置了jacoco代理。然后,merge
目标将创建一个jacoco.exec
文件,以在单个.exec
文件中进行单元测试和集成测试。在verify
阶段,report
目标基于合并的jacoco.xml
文件创建jacoco.exec
。
在SonarQube中,覆盖范围正在运行,但是单元测试的数量似乎不包括集成测试。通过这种设置,我的覆盖率达到了80%以上,并进行了54次单元测试。如果我删除了prepare-agent
目标,那么覆盖率将下降到20%,但仍然是54个单元测试,而集成测试有5个。因此,这意味着集成测试的覆盖范围有效,但是单元测试的数量却无效。
我的理解是SonarQube中的单元测试数量就是单元测试和集成测试的数量。没有用于集成测试的专用计数器。
SonarQube如何计算单元测试的数量?通过解析surefire报告?集成测试的类名称为MyResourceIT。
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.5</version>
</plugin>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<destFile>${project.build.directory}/jacoco-ut.exec</destFile>
</configuration>
</execution>
<execution>
<id>pre-integration-prepare</id>
<goals>
<goal>prepare-agent-integration</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>post-integration-test</phase>
<goals>
<goal>merge</goal>
</goals>
<configuration>
<fileSets>
<fileSet>
<directory>${project.build.directory}</directory>
<includes>
<include>*.exec</include>
</includes>
</fileSet>
</fileSets>
</configuration>
</execution>
<execution>
<id>merged-report-generation</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)