我们有一个小型多模块Java Spring REST应用程序,它使用maven surefire插件构建。因为应用程序相当小,我们编写了单元测试和集成测试的混合,并将它们全部作为单元测试运行,因此我们得到一组jacoco.exec文件。
当我在SonarQube中提取测试覆盖率时,仅针对运行测试的模块计算覆盖率。因此,我们在REST控制器层中进行的集成测试不会在业务层或数据层中生成任何覆盖。
我尝试了多种配置的jacoco,我已经厌倦了盯着它。任何建议都会有所帮助。
父pom.xml中的jacoco配置:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.7.201606060606</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
父pom.xml中的surefire配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<systemPropertyVariables>
<org.jboss.logging.provider>slf4j</org.jboss.logging.provider>
</systemPropertyVariables>
</configuration>
</plugin>
答案 0 :(得分:0)
仅针对运行测试的模块计算覆盖率
这是在SonarQube中导入JaCoCo报告的方式。
如果您想克服这个问题,您可能希望在将报告提供给SonarQube之前合并报告。