gpt4 book ai didi

java - 合并来自多个 Jenkins 作业的测试覆盖率和测试结果

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:35 27 4
gpt4 key购买 nike

背景:

我们有一个用 Java 编写的相当大的 REST API,我们正在结合单元测试和功能测试对其进行测试。测试它时需要进行许多变体,特别是在功能级别。虽然单元测试位于树中,但功能测试位于单独的代码存储库中。

我们目前使用 Jacoco 进行测试覆盖,使用 TestNG 运行我们的单元测试,但我相信我的问题的答案应该适用于其他工具组合。

我们在 Jenkins 中有几个不同的工作,这些工作是由 checkin 主要项目触发的。其中包括运行 Coverity 等工具的作业以及几个不同的功能测试作业。这些作业由初始提交触发,在所有下游作业成功完成之前,初始提交不被视为“绿色”。

问题:

我们如何获取覆盖率报告(如 Jacoco 二进制文件和 TestNG xml 文件)并将它们组合起来以显示我们所有测试的总代码覆盖率?具体来说,如果它们存在于同一个作业/目录中,我们知道如何组合它们,但这些文件分布在可能在不同时间运行的多个 Jenkins 作业中。

根据我的经验,最普遍接受的处理方式是使用 Promoted Builds Plugin触发所有作业,然后在完成触发作业时拉出它们的工件。但是,当您尝试汇总一两个以上的工作时,我觉得这种扩展性不是很好。当您的主项目(旧版本等)可能有多个变体时,尤其如此。

我知道可以在 Jenkins 中对文件进行指纹识别,这样我们就知道 -.jar 与作业 A、B 和 C 中使用的版本相同。是否存在可以检索所有匹配模式的文件的插件是否存在不同的指纹文件?

另一种解决方案(可能从 ant/groovy 脚本运行)是将测试数据推送到与 git commit hash 绑定(bind)的某个目录,并在基于 roll-up 作业中检索所有此类数据在基础项目的 git commit hash 上。

有没有简单的方法可以做到这一点?有没有人想出更好的其他方法来解决这个问题?

谢谢,

迈克尔

最佳答案

面对类似的问题,调整 jacoco maven 插件配置以合并 jacoco 结果。基本上将 jacoco-unit.exec 和 jacoco-it.exec 合并为一个二进制文件,并通过管道步骤在 Jenkins 上发布合并结果。

pom.xml:

            <plugin>
<inherited>false</inherited>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.agent.version}</version>
<executions>

<execution>
<id>merge-results</id>
<phase>post-integration-test</phase>
<goals>
<goal>merge</goal>
</goals>
<configuration>
<fileSets>
<fileSet>
<directory>${project.parent.build.directory}</directory>
<includes>
<include>jacoco-*.exec</include>
</includes>
</fileSet>
</fileSets>
<destFile>${project.parent.build.directory}/jacoco.exec</destFile>
</configuration>
</execution>
</executions>
</plugin>

Jenkins 文件:

            echo 'Publish Jacoco trend'
step($class: 'JacocoPublisher',
execPattern: '**/jacoco.exec',
classPattern: '**/classes',
sourcePattern: '**/src/main/java',
)

但是,您仍然需要通过另一个构建步骤从多个 Jenkins 构建中获取 jacoco 二进制文件,或者明确指定它们的位置。

关于java - 合并来自多个 Jenkins 作业的测试覆盖率和测试结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39983103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com