Integrating JaCoCo with SONAR for unit and integration test coverage(将 JaCoCo 与 SONAR 集成以实现单元和集成测试覆盖率)
问题描述
有没有人尝试过配置 JaCoCo 以将单元和集成测试的覆盖率转储到 2 个不同的文件中,以便 SONAR 使用它们,使用 ANT 构建?
Has any one tried configuring JaCoCo to dump the coverage of unit and integration tests in 2 different files, for SONAR to use them, using ANT build?
推荐答案
这是一个可行的解决方案,为单元测试和集成测试生成报告.此解决方案使用 append
策略.
Here is a working solution, generating the report for both unit tests and integration tests. This solution is using the append
strategy.
请注意,为了在 apply
策略上正常工作,阶段应按顺序执行(如果 mvn test
和 mvn verify -DskipUnitTests
将并行执行,可能无法正常工作).
Please note that in order to work properly on the apply
strategy, the phases should be executed sequentially (if the mvn test
and mvn verify -DskipUnitTests
will be executed in parallel there is possible to not work fine).
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<configuration>
<skip>${skipTests}</skip>
<!-- This line is very important, because allows to append the results to the `jacoco_aggregation.exec` report. -->
<append>true</append>
<!-- DestFile is the file defined, where the `prepare-agent` will pe publishing the result of analysis,
for the defined `phase`. In our case is executed initially and to the `pre-integration-test` phase. -->
<destFile>${project.build.directory}/coverage-reports/jacoco_aggregation.exec</destFile>
<!-- DataFile is the path from where the `report` goal will be reading the report
in order to create the `outputDirectory` .xml file. -->
<dataFile>${project.build.directory}/coverage-reports/jacoco_aggregation.exec</dataFile>
<!-- To the goal `report`, will be reading the report from `dataFile` path and will be publishing the result,
to the `outputDirectory` path as an .xml file.
In our case, the report is generated for two times:
- first time after the `test` phase
- second time after the `post-integration-test` phase -->
<outputDirectory>${project.reporting.outputDirectory}/jacoco</outputDirectory>
</configuration>
<executions>
<!-- Prepares the property pointing to the JaCoCo runtime agent which
is passed as VM argument when Maven the Surefire plugin is executed. -->
<execution>
<id>pre-unit-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<!-- Sets the name of the property containing the settings for JaCoCo runtime agent. -->
<propertyName>surefireArgLine</propertyName>
</configuration>
</execution>
<!-- Ensures that the code coverage report `jacoco.xml` is generated once the unit tests were executed.
Executes the `report` goal after the `post-integration-test` phase. -->
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<!-- Prepares the property pointing to the JaCoCo runtime agent which
is passed as VM argument when Maven the Failsafe plugin is executed. -->
<execution>
<id>pre-integration-test</id>
<phase>pre-integration-test</phase>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<!-- Sets the name of the property containing the settings for JaCoCo runtime agent. -->
<propertyName>failsafeArgLine</propertyName>
</configuration>
</execution>
<!-- Ensures that the code coverage report `jacoco.xml` is generated once the integration tests were executed.
Executes the `report` goal after the `post-integration-test` phase. -->
<execution>
<id>post-integration-test</id>
<phase>post-integration-test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- Sets the VM argument line used when unit tests are run. -->
<argLine>${surefireArgLine}</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<!-- Sets the VM argument line used when integration tests are run. -->
<argLine>${failsafeArgLine}</argLine>
</configuration>
</plugin>
生成报告后,您可以执行声纳命令来应用报告.
Once the reports are generated, you can execute the sonar commant to apply the reports.
mvn sonar:sonar -Dsonar.coverage.jacoco.xmlReportPaths="target/site/jacoco/jacoco.xml"
这篇关于将 JaCoCo 与 SONAR 集成以实现单元和集成测试覆盖率的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将 JaCoCo 与 SONAR 集成以实现单元和集成测试覆盖率
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- Java包名称中单词分隔符的约定是什么? 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01