构建 xunit.xml 文件后应该使用 xUnitPublisher 还是 xUnitBuilder?

2024-01-07

我正在自动化 dot net core 构建

鉴于 Jenkins 文件中的以下代码片段,我为每个测试项目生成一个 XML 文件。在接下来的步骤中,我想处理这些 XML 文件。

詹金斯给出了两个选择。我很困惑该使用哪个选项。我使用“处理”还是“发布”。两者都提供了有关阈值的相同选项,两者似乎都做了相同的事情。他们都将构建标记为“失败”,并且都向 Jenkins 提供了测试报告。这是遗产吗?或者他们是完全不同的步骤,有自己的目的?

顺便说一句,这个失败检查并抛出错误是阻止 Jenkins 继续构建的唯一方法吗?当构建被标记为“失败”而无法继续其余步骤时,这似乎有点奇怪。如果我想继续,我也可以将 stopProcessingIfError 设置为 false,还是我错过了重点?

stage('Test') {
    def testScript = ""
    def testProjects = findFiles(glob: 'test/**/project.json')

    if (!fileExists('reports/xml')) {
        if (!fileExists('reports')) {
            sh "mkdir reports"
        }
        sh "mkdir reports/xml"
    }

    for(prj in testProjects) {
        println "Test project located, running tests: " + prj.path
        def matcher = prj.path =~ 'test\\/(.+)\\/project.json'

        testScript += "dotnet test --no-build '${prj.path}' -xml 'reports/xml/${matcher[0][1]}.Results.xml' || true\n"
    }

    sh testScript

    step([
        $class: 'XUnitBuilder',
        thresholdMode: 1,
        thresholds: [[$class: 'FailedThreshold', failureThreshold: '1']],
        tools: [[
            $class: 'XUnitDotNetTestType',
            deleteOutputFiles: true,
            failIfNotNew: true,
            pattern: 'reports/xml/*.Results.xml',
            skipNoTestFiles: false,
            stopProcessingIfError: true
        ]]
    ])

    if (currentBuild.result.equals("FAILURE")) {
        throw "Test results did not pass thresholds"
    }
}

查看源代码后,它们的功能似乎相同,除了XUnitPublisher有一个额外的方法,我不明白其目的(!),并且该类在implements list.

关键的区别似乎是XUnitPublisher类扩展了hudson.tasks.Recorder http://javadoc.jenkins.io/hudson/tasks/Recorder.html类,同时XUnitBuilder延长了hudson.tasks.Builder http://javadoc.jenkins-ci.org/hudson/tasks/Builder.html.

我认为面向用户的区别在于,构建器中的失败将 Jenkins 作业标记为“失败”,而发布者中的失败则将作业标记为“不稳定”。 (来源:https://wiki.jenkins.io/display/JENKINS/Terminology https://wiki.jenkins.io/display/JENKINS/Terminology)

鉴于这一切,我建议使用 xUnitPublisher。我将构建命令设置为如果编译通过但某些测试失败则返回 0。这样,Jenkins 会为我提供 FAILED 状态(表示编译损坏)和 UNSTABLE 状态(表示编译正常但测试失败)。我喜欢这样。

提交历史并不能解释为什么会出现这种荒谬的代码重复。我会理解如果一个是根据另一个来实现的,就像通常在弃用时所做的那样......可能是因为每个都必须有不同的超类。

XUnitBuilder.java https://github.com/jenkinsci/xunit-plugin/blob/207f77849172d84c4e4ae8225e345bfbb2796d45/src/main/java/org/jenkinsci/plugins/xunit/XUnitBuilder.java, XUnitPublisher.java https://github.com/jenkinsci/xunit-plugin/blob/207f77849172d84c4e4ae8225e345bfbb2796d45/src/main/java/org/jenkinsci/plugins/xunit/XUnitPublisher.java

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

构建 xunit.xml 文件后应该使用 xUnitPublisher 还是 xUnitBuilder? 的相关文章

  • .NET 中严格浮点数学的库

    我有 Java 算法 计算及其单元测试 单元测试期望结果具有一定的精度 增量 现在我将算法移植到 NET 中 并希望使用相同的单元测试 我使用双数据类型 问题在于 Java 使用 strictfp 64 位 来执行 Math 类中的某些操作
  • WCF 服务调用包装器

    为 WCF 服务调用创建包装器的最佳实践是什么 我认为有必要 为了在同一个地方监视所有呼叫 我正在考虑使用这种代码 这是正确的想法吗 RetType t ServiceExecutionContext
  • 如何从asp net core中的AuthorizationFilter重定向到登录页面?

    当我回来时ForbidResult 它重定向到AccessDenied启动时指定的页面 我想做同样的事情UnauthorizedResult 但重定向到Login page P S 我没有使用标准Authorize控制器中的属性我有自己的
  • 如何从 TeamCity 提取工件?

    我想从 teamcity 中提取工件 我一直在尝试使用 c 和 HtmlAgilityPack 访问网站并查找最新版本及其工件 我目前陷入登录困境 我想我只需要发送会话 Cookie 即可 我的方向正确吗 还有其他人尝试过吗 我意识到使用构
  • VSTS/TFS设置环境变量ASP.NET core

    我正在尝试使用 VSTS 将 ASP NET Core 应用程序部署到 IIS 并执行以下任务 然而 经过多次谷歌搜索和浏览 MS 文档后 我找不到为部署设置环境变量的方法 我在环境范围的发布定义中设置的变量未设置为环境变量 知道如何实现这
  • 如何解决asp.net core mvc项目中的“未找到视图”异常

    我正在尝试使用 VS Code 创建一个在 OSX 上运行的 ASP NET Core MVC 测试应用程序 访问默认主页 索引 或我尝试过的任何其他视图 时 我收到 未找到视图 异常 这是启动配置 public void Configur
  • 为使用 SSH.NET SshClient.CreateShellStream 执行的命令 (sudo/su) 提供子命令

    我正在尝试使用 Renci SSH NET 从 C Web 应用程序连接到远程 Linux 服务器并执行 shell 脚本 我想一个接一个地运行脚本 但不知道如何运行脚本并读取输出并将其存储在标签中 我已经尝试了下面的代码 但无法一行接一行
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • ASP.NET Core 2.1 中不使用正则表达式的 URL 重写

    我的图标位于 images favicon ico而不是根 在Startup cs我可以添加重定向以避免 404 app UseRewriter new RewriteOptions AddRedirect favicon ico imag
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 从 Excel 应用程序对象中查找位数(32 位/64 位)?

    是否可以从 Microsoft Office Interop Excel ApplicationClass 确定 Excel 是以 32 位还是 64 位运行 Edit该解决方案应该适用于 Excel 2010 和 Excel 2007 此
  • 函数的变量存储在哪里?在堆栈或堆上?

    当程序调用函数时 为该函数中的变量分配哪种类型的数据结构内存 堆还是栈 为什么 在我看来 它应该存储在堆栈上 因为它们不一定是引用类型 但在我读到答案的地方 据说它们存储在堆上 并在函数返回值后释放 它比这更复杂一点 事实上使用堆栈和堆实际
  • 在 C# 中读取/写入大型 XML 文件

    我正在开发一个带有 XML 数据库的应用程序 我有很大的 XML 文件 我必须在其中读取和写入数据 问题是我不想将整个 XML 文件加载到内存中 也不想因为性能问题而循环遍历整个文件 因为如果我将整个文件加载到内存中 这将影响应用程序性能
  • Swagger 不生成 swagger.json

    我在一个解决方案中拥有 asp net core MVC 项目和单独的 WebApi 项目 我按照 github 上的文档添加了 swagger 这是我的 mvc 项目的 Startup cs public void ConfigureSe
  • 避免使用一本字典的更好代码 - 区分大小写问题

    我有以下方法用数据读取器的值填充字典 数据读取器字段和传递给方法的属性之间可能存在大小写不匹配的情况 在下面的方法中 我首先将属性转换为小写以解决此问题 这会导致两个字典 有没有更好的方法用一本字典来实现这一目标 private Dicti
  • 如何将 dll 中包含的组件嵌入到 exe 中,以便它可以从内存运行?

    我正在尝试制作一个必须从内存运行的程序 通过Assembly Load bin 如上所述here http www codeproject com Articles 13897 Load an EXE File and Run It fro
  • 从 SQL 语句中检索元数据(表名)

    我使用的是 Visual Studio 2008 我创建了一个 Winforms 应用程序 并且尝试从 SQL 语句中提取表名 con new SqlConnection connString String queryString Sele
  • 检测到 ASP.NET 网页版本冲突:指定版本为“1.0.0.0”,但 ASP.MET MVC 3 中 bin 中的版本为“2.0.0.0”

    安装 microsoft web helper 后出现以下错误 检测到 ASP NET 网页版本冲突 指定版本为 1 0 0 0 但 bin 中的版本为 2 0 0 0 要继续 请从应用程序的 bin 目录中删除文件或删除 web conf
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对

随机推荐

  • 即使循环中发生错误如何继续游标循环

    我想将一个表的行插入到另一个表中 为此 我有以下程序 ALTER PROCEDURE LOADDATA a AS BEGIN TRUNCATE TABLE STIDENT A DECLARE SID INT DECLARE SNAME VA
  • 对每个集合视图单元格使用单个表视图控制器

    我有 5 个集合视图单元格 名称为 餐厅 商店 医疗 客厅 公园 等 所以现在我设置了 10 个视图控制器 并将表视图放置在每五个控制器内 我调用 json 数据并在表视图中显示 我还有一个自定义单元格 我在其中用于所有 iew contr
  • ios 当我尝试注册我的应用程序时,如何取消选择游戏中心和应用内购买

    我正在尝试在苹果开发者门户中注册我的应用程序 但您可以在那里选择您的应用程序将要使用的服务 我的问题是我不会使用 游戏中心 或 应用内购买 我怎样才能取消选择这些 我将非常感谢你的帮助 Use Wildcard App ID 如中所示Reg
  • 使用 -Ylog-classpath 运行 sbt

    当我运行 sbtcompile 时出现这样的错误 missing or invalid dependency detected while loading class file DefaultReads class error Could
  • PHP 将 Excel (.xls) 转换为 pdf [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何 php java 开源软件转换器或 php 库可以将 xls 文件转换为 pdf 文档 概
  • 如何使用R将年度数据转换为月度数据?

    我有2000年至2015年15年的逐年GDP数据 我想将这些数据转换为月度数据 其中只有月份和年份 我只想将当年的值复制到所有月份 我怎样才能在 R 中做到这一点2010 年的值是 1708 我想为 2010 年的所有月份复制相同的值 我的
  • 最长的数字循环周期

    我试图找到小于 1000 的数字 该数字除以 1 时会产生最长的重复数字串 我有一个十进制数字列表 必须找到具有最长重复序列的数字 这是我到目前为止所拥有的 numbers 2 999 decimal representations num
  • 由于 Android 不活动,15 分钟后自动注销

    如何在android中使用计时器因用户不活动而在15分钟后自动注销 我在 loginActivity java 中使用以下代码 public class BackgroundProcessingService extends Service
  • 错误:无法显示子报表。子报告在预览中有效 - 但在部署时无效

    我有一个运行多个子报告的主报告 我的一个子报告在预览中运行得非常好 但是当我部署该报告并从浏览器运行它时 我只是得到 错误 无法显示子报表 我做了一些研究 但仍然不确定问题是什么 我在不同的浏览器中尝试过 主报告和子报告的数据源都使用相同的
  • 类型错误:无法读取未定义的属性“measureInWindow”

    环境 Windows 10 Node js 10 x Expo 35 0 0 React 16 8 React native 0 62 0 React navigation 3 0 7 开发了一个简单的应用程序来测试 Android 应用程
  • 如何创建提交登录表单的书签

    我意识到从安全角度来看这并不是很好 但请幽默一下 有没有办法创建一个提交表单 例如登录表单 的书签 例如 这有效 但前提是当前浏览器窗口中加载了页面 javascript function document body innerHTML
  • 如何在android中生成release key

    我已经完成了简单的地图应用程序 这里我从 debug keystore 获得了 api 密钥 它在模拟器上工作正常 当我尝试将其作为 apk 文件获取并在设备上运行时 它没有显示地图 我想我需要为其创建发布密钥 我如何为其生成发布密钥以及如
  • 使用向导时如何将输入框值绑定到支持 bean 属性中的映射值

    我正在使用 Primefaces 向导组件 在一个选项卡上 我根据以前的选项卡输入 用户类型 动态创建输入框 输入框文本标签源自列表 在我的支持 bean 中 我有一个映射 其中包含作为键的输入标签和作为值的输入框输入 单击下一步 我希望使
  • 反应本机应用程序中的 canOverrideExistingModule 问题

    大家好 我尝试使用react native camera模块创建一个相机应用程序 当我尝试在我的设备 Android 手机 上运行此应用程序时 出现以下错误 任何人都可以为我提供解决方案吗 转到文件 MainApplication java
  • IIS url 重写 - css 和 js 被错误地重写

    我的 urlrewrites 存在问题 每当我指向要重写的页面时 它都无法显示 因为它还将规则应用于我的网页中引用的 css 和 js 文件 为了尝试解决这个问题 我放入了 css 和 js 的完全限定路径 这在未应用重写的任何页面上都呈现
  • 创建对变量的引用(类似于 PHP 的“=&”)?

    在 PHP 中 可以创建一个引用变量 以便两个命名变量可以查看相同的值 a 1 b a echo a 1 echo b 1 b 2 echo a 2 我希望在 Python 中实现类似的目标 具体来说 我想创建对对象属性的引用 例如 cla
  • C - 使用 scanf 读取特殊字符,例如 'ã'

    是否有可能使scanf读取所有特殊字符 我知道你可以使用scanf n s string 强制 scanf 接受空格 但是我可以对特殊字符做同样的事情吗 例如 当我尝试输入 N o 时 结果只是 N 就像scanf遇到 unicode 字符
  • 如何在 Visual Studio 中安装 C# 类库?

    我正在尝试使用我找到的类库关于这里的另一个问题 https stackoverflow com a 281381 1934286 总的来说 我对 C Visual Studio 和 OOP 还很陌生 所以如果这不是正确的问题 请原谅我 我点
  • GIT 无法生成 Askpass 克隆 Git 存储库时没有此类文件或目录 [重复]

    这个问题在这里已经有答案了 我参考了很多网站来解决 VS 2017 TFS 中的 Git 存储库克隆问题 但无法修复 请帮我 以下是 Visual Studio 版本详细信息 微软 Visual Studio 专业版 2017 版本 15
  • 构建 xunit.xml 文件后应该使用 xUnitPublisher 还是 xUnitBuilder?

    我正在自动化 dot net core 构建 鉴于 Jenkins 文件中的以下代码片段 我为每个测试项目生成一个 XML 文件 在接下来的步骤中 我想处理这些 XML 文件 詹金斯给出了两个选择 我很困惑该使用哪个选项 我使用 处理 还是