当前位置: 首页 > 知识库问答 >
问题:

用JaCoCo合并集成和单元测试报告

长孙波鸿
2023-03-14

在我认为是彻底的谷歌搜索后,我只能找到一种方法来做这件事与声纳。有没有更简单的方法可以做到这一点?

相关问题:Maven分离单元测试和集成测试

共有1个答案

吕德业
2023-03-14

我最近实现了这一点:在经历了一些头痛和大量测试后,我有了一个运行良好的配置。

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>${jacoco.version}</version>
    <executions>
        <execution>
            <id>pre-unit-test</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
            <configuration>
                <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
                <propertyName>surefireArgLine</propertyName>
            </configuration>
        </execution>
        <execution>
            <id>pre-integration-test</id>
            <goals>
                <goal>prepare-agent-integration</goal>
            </goals>
            <configuration>
                <destFile>${project.build.directory}/coverage-reports/jacoco-it.exec</destFile>
                <propertyName>testArgLine</propertyName>
            </configuration>
        </execution>
        <execution>
            <id>post-integration-test</id>
            <phase>post-integration-test</phase>
            <goals>
                <goal>report</goal>
            </goals>
            <configuration>
                <dataFile>${project.build.directory}/coverage-reports/jacoco-it.exec</dataFile>
                <outputDirectory>${project.reporting.outputDirectory}/jacoco-it</outputDirectory>
            </configuration>
        </execution>
        <execution>
            <id>post-unit-test</id>
            <phase>prepare-package</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>
        <execution>
            <id>merge-results</id>
            <phase>verify</phase>
            <goals>
                <goal>merge</goal>
            </goals>
            <configuration>
                <fileSets>
                    <fileSet>
                        <directory>${project.build.directory}/coverage-reports</directory>
                        <includes>
                            <include>*.exec</include>
                        </includes>
                    </fileSet>
                </fileSets>
                <destFile>${project.build.directory}/coverage-reports/aggregate.exec</destFile>
            </configuration>
        </execution>
        <execution>
            <id>post-merge-report</id>
            <phase>verify</phase>
            <goals>
                <goal>report</goal>
            </goals>
            <configuration>
                <dataFile>${project.build.directory}/coverage-reports/aggregate.exec</dataFile>
                <outputDirectory>${project.reporting.outputDirectory}/jacoco-aggregate</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>
        <argLine>${surefireArgLine}</argLine>
        <skipTests>${skip.unit.tests}</skipTests>
        <includes>
            <include>**/*UT.java</include>
            <include>**/*MT.java</include>
            <include>**/*Test.java</include>
        </includes>
        <skipTests>${skipUTMTs}</skipTests>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.12.4</version>
    <configuration>
        <skipTests>${skipTests}</skipTests>
        <skipITs>${skipITs}</skipITs>
        <argLine>${testArgLine}</argLine>
        <excludes>
            <exclude>**/*UT*.java</exclude>
        </excludes>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

如您所见,有6个不同的Jacoco执行来运行测试、合并文件并创建聚合报告。在Jacoco配置之上,还需要配置Surefire和Failsafe以从Jacoco获取参数(Surefire运行单元测试,Failsafe运行集成测试)。

我使用的所有配置都应该在那里,你用它做的是你的设计架构,使它适合你想要的需求。就我个人而言,如果您遇到文件未被读取的问题,我建议查看一下我在surefire和failsafe中排除和包括的内容。

 类似资料:
  • 我使用plugin scala为我的scala项目生成测试覆盖率报告。但是,我无法组合单元测试和集成测试的测试报告。 以下是我运行的命令 在上面的例子中,我只得到集成测试的覆盖率报告。 问题 如何生成一个报告来汇总单元测试和集成测试的结果 提前谢谢。

  • 我正在使用Sonarqube跟踪多模块Maven项目的单元和联调覆盖率。 这是在我进行更改之前,用于在本地生成Sonarqube报告的父pom.xml中的现有配置文件: 在Sonarqube本地生成所有单元测试覆盖范围的配置文件 当我运行 中使用了以下pom.xml: 父pom。由于NoClassDefFound错误而无法生成的xml 对于适当的pom.xml配置有什么想法,以使离线仪器能够在So

  • 单元测试 单元测试仅依赖于源代码,是测试代码逻辑是否符合预期的最简单方法。 运行所有的单元测试 make test 仅测试指定的package # 单个package make test WHAT=./pkg/api # 多个packages make test WHAT=./pkg/{api,kubelet} 或者,也可以直接用go test go test -v k8s.io/kubernet

  • 我已经看了一段时间关于stackoverflow的不同文章和答案,但我还没有找到适合我的情况的有效解决方案。我对jacoco、maven和sonar如何一起创建报告的理解肯定有问题,所以我要寻求帮助。 我有一个多模块maven项目,其结构如下(稍微简化了一下): 请允许我扩展一下。父模块只是一个带有整个依赖项及其版本的pom。这个pom被用作level1的每一个其他模块的父模块(直接位于根下面)。

  • 我一直在尝试在JBoss服务器中实现JaCoCo离线代码覆盖,使用仪表化的EAR进行部署和jacococagent.jar,以便跟踪针对所述JBoss运行的外部集成测试的代码覆盖。 我一直在关注这样的指南: http://www.eclemma.org/jacoco/trunk/doc/offline.html http://automationrhapsody.com/code-coverage

  • 我正在Jenkins中设置一个CD管道,我想在两个不同的步骤中运行我的单元测试和集成测试。计划是让我的管道脚本看起来像这样,并让它们单独运行: 我已尝试使用surefire插件,如下所述:https://dzone.com/articles/splitting-unit-and-integration-tests-using-maven-a,而运行“mvn测试”只运行单元测试,但“mvn集成测试”