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

2023-11-22

我的代码结构如下:

events
消息
其他代码
功能测试

在 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

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

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

and set clsDir = target/classes,

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

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

EDIT:

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

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


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

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

**/events,**/other-code

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

Here is my working JaCoCo plugin configuration: Example JaCoCo Plugin Configuration

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Jacoco 和多个模块在 Jenkins 中实现代码覆盖率? 的相关文章

随机推荐

  • Django:i18n - 更改语言

    我安装了 model translation rosetta locale url 但改变语言不起作用 我的设置 py LANGUAGE CODE ru MODELTRANSLATION TRANSLATION REGISTRY proje
  • 在 Delphi 中使用 ADOConnection 查看“打印”语句的输出

    我的一些 MS SQL 存储过程使用 print 命令生成消息 在我的 Delphi 2007 应用程序中 使用 TADOConnection 连接到 MS SQL 如何查看这些 打印 命令的输出 关键要求 1 我不能多次运行查询 它可能正
  • 在 package.json 中使用“homepage”,不会弄乱 localhost 的路径

    这个问题实际上直接来自我的answer关于之前的问题 我添加了一个 homepage to my package json因为它是我在 Github Pages 上托管的 React 应用程序 的输出npm run build说 build
  • 使用 Tailwind CSS 基于类的暗模式防止 Next.js 12 中的页面闪烁

    在 Tailwind CSS 中使用 Next js v12 中基于类的深色模式时 如何防止页面闪烁 而不使用任何 3rd 方 pkg 例如 next themes 我看过 本次问答如何修复 NextJS 中的深色模式背景颜色闪烁 虽然它在
  • 检测类是否被定义为声明式或函数式 - 可能吗?

    这是一个以声明方式创建的简单类 class Person def say hello self print hello 这是一个类似的类 但它是通过手动调用元类来定义的 def say hello self print sayolala s
  • 如何在 WPF 中自动调整 GridViewColumn 数据大小并右对齐?

    我怎么能够 将 ID 列中的文本右对齐 使每列根据具有最长可见数据的单元格的文本长度自动调整大小 这是代码
  • != 运算符和文件流

    include
  • 使用 grunt 运行 Angular.js 时如何修复错误“请设置环境变量 CHROME_BIN”

    我正在尝试使用 AngularJS 进行单元测试 我已经安装了 Bower 和 grunt 所以我应该能够进行测试 但是 当我从终端 在我的例子中是 Git Bash 运行 grunt test 时 我收到错误 请设置环境变量 CHROME
  • .NET 垃圾收集器 - 它的线程优先级是什么?

    我发现了一些很棒的文章 Maoni 里克特 1 里氏 2 给出了关于 GC 的理论和实践的许多细节 但我找不到任何说明 GC 的线程优先级是如何设置的 我发现的最接近的是这个 它指出 Finalizer 线程 以高优先级与应用程序异步运行
  • 从 RecyclerView EditText 获取值?

    我对recyclerView感到震惊 这里的名称和余额字段来自两个不同的数组 我需要的是 这里每一行都有一个 EditText 字段 我需要访问每行上的每个 EditText 并从中获取值 并且总计显示在 Total textView 上
  • 在哪里可以找到适用于 32 位 Windows 的 JDK? [关闭]

    Closed 这个问题是无关 目前不接受答案 在我的一生中 我似乎找不到适用于 32 位 Windows 机器的 Java SE JDK 的工作版本 甲骨文把它放在哪里了 谢谢 内森 访问 Oracle 网站 您要查找的是 x86 而不是
  • 可观察的堆栈和队列

    我正在寻找一个INotifyCollectionChanged实施Stack and Queue 我可以自己动手 但我不想重新发明轮子 我遇到了同样的问题 想将我的解决方案分享给其他人 希望这对某人有帮助 public class Obse
  • 自动聚焦于 EditorFor

    我想在我的应用程序中自动聚焦于编辑器 但我似乎无法做到这一点 我已成功在文本框上使用自动对焦 但我想使用编辑器来保持应用程序的外观通用 任何对此问题的解决方案将不胜感激 谢谢 我的尝试 Html EditorFor model gt mod
  • 如何衡量休眠性能?

    如何衡量休眠状态下的性能 我想知道hibernate执行一个查询需要多少时间 JProfiler 7 1 有一个 JPA Hibernate 探针 http www ej technologies com products jprofile
  • 函数参数中的 PHP 标志是什么?

    我注意到 PHP 中的一些函数使用flags作为参数 是什么让它们独特而不是普通的字符串参数 我之所以这么问 是因为我想在自己的自定义函数上使用它们 但很好奇这样做的过程是什么 Edit 总结一下 什么时候最好创建带有标志的自定义函数以及什
  • 在 python 中将 OAuth2 与 gdata 上的服务帐户结合使用

    我想用data photos service PhotosService从 Picasa 推送和拉取照片 我从 Google 控制台获得了一个服务密钥文件 XXXXXXXX privatekey p12 现在正在尝试使用该密钥对 googl
  • 为什么将数组添加到 number 会返回字符串? [复制]

    这个问题在这里已经有答案了 var array 1 2 4 array 1 gives 1 2 41 谁能解释这种行为 谁能解释这种行为 这个答案试图解释这种行为从规格的角度来看 As per spec 在运行时评估期间 两个表达式 左和右
  • HMACSHA1.ComputeHash() 线程安全问题

    我问自己 在 ASP NET 页面的代码隐藏中使用包含 HMACSHA1 实例的静态 共享 变量是否会很危险 问题是 在同一 ASP NET 页面上处理多个同时请求时 所有 ASP NET 工作进程线程将使用相同的 HMACSHA1 实例
  • Mysql计数频率

    我检查过类似的问题 但它对我的精确问题没有帮助 所以 我的桌子是这样的 id age 1 30 2 36 3 30 4 52 5 52 6 30 7 36 etc 我需要计算年龄的频率 age freq 30 2 36 3 52 2 我怎样
  • 如何使用 Jacoco 和多个模块在 Jenkins 中实现代码覆盖率?

    我的代码结构如下 events消息其他代码功能测试 在 jacoco 的构建脚本中 首先它必须复制所有类并使用该类目录来运行该工具 您能否在此处描述目标目录的步骤 我的意思是如何提及运行代码覆盖率的目录 构建后 每个文件夹都有自己的目标文件