gpt4 book ai didi

jenkins - 如何使用 Jacoco 和多个模块在 Jenkins 中实现代码覆盖率?

转载 作者:行者123 更新时间:2023-12-02 12:56:28 26 4
gpt4 key购买 nike

我的代码结构如下:

events
messages
other-code
functional-tests

在 jacoco 的构建脚本中,首先必须复制所有类并使用该类目录来运行该工具。您能否在此处描述目标目录的步骤。我的意思是如何提及运行代码覆盖率的目录。

构建后,每个文件夹都有自己的目标文件夹,其中包含类。

步骤如下:

  1. 将项目构建为 Jenkins 中的一项工作
  2. 将其部署到用户阶段
  3. 在 Jenkins 中运行 jacoco 报告作业

Jacoco报告工作说明:

  1. 构建步骤 - maven 3.3.3目标——干净测试并传递测试套件、用户阶段详细信息和其他信息。

  2. 发布步骤 - 执行 shell

    此处无法格式化并粘贴,因此上传至此处:https://zerobin.net/?8a988cd05bf3d752#fbzMlW1b7uzD+HZnmwnd9WjQYBI3j95Q7DCIx6q+l0U=

  3. 调用顶级 Maven 目标 - maven 3.3.3-f jacoco_pom.xml jacoco:dump antrun:run@report

clasDir shell 粘贴中使用的变量应该有类。到目前为止,我已经在 shell 脚本的开头完成了此操作。

mkdir -p target/classes
cp -R messages/target/classes target/classes

并设置clsDir = target/classes ,

这样我就得到了该模块的报告。我的测试套件只包含一个类。我想包括其他模块,例如 events , other-code并链接来源。

我需要有关如何设置的帮助。主要目的是生成功能测试的代码覆盖率报告。

编辑:

答案:下面的答案有帮助,但这一切都是通过 shell 命令而不是任何 UI 来完成的。因此,克隆存储库,执行 mvn clean package -DskipTests并从所有模块文件夹中复制所有第一级子文件夹有所帮助,但随后它在覆盖范围中显示错误类文件的执行数据不匹配。这意味着检测的类和我们用于覆盖的类是由不同的 JVM 分别构建的(一个在 Jenkins 中,另一个在阶段部署)。

因此,解决方案是不克隆并重新编译它们,而是从部署存储库下载 list 并解压所有 jar。这样我就拥有了同一版本中的所有类。

最佳答案

要通过更改 Jenkins JaCoCo 插件配置来包含多个类目录,您需要修改“类目录路径”字段。

例如,如果您想在“events”和“other-code”目录下包含任何类,则可以将以下内容添加到“类目录的路径”部分:

**/events,**/other-code

请记住,如果您想添加多个目录,您必须用逗号分隔每个目录,并且不能有空格(由于插件的错误)。注意:此逗号错误适用于此插件配置中的所有文本字段。

这是我的工作 JaCoCo 插件配置:Example JaCoCo Plugin Configuration

编辑:正如评论中提到的,解决此问题的一种方法是利用您正在使用的任何构建工具(Ant、Maven、Gradle)来删除目标 (即:jar、war 等)到一个公共(public)目录中,然后将 jacoco 插件指向那里。

关于jenkins - 如何使用 Jacoco 和多个模块在 Jenkins 中实现代码覆盖率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42265838/

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