gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 04:33:32 24 4
gpt4 key购买 nike

我正在自动化点网核心构建

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

Jenkins 给出了两种选择。我很困惑使用哪个选项。我使用“过程”还是“发布”。两者都给出了相同的阈值选项,两者似乎都做同样的事情。他们都将构建标记为 FAILED,他们都向 Jenkins 提供了测试报告。这是遗产吗?或者它们是完全不同的步骤,有自己的目的?

顺便说一句,这个 FAILURE 检查并抛出错误是阻止 Jenkins 继续构建的唯一方法吗?当构建标记为 FAILED 以继续其余步骤时,这似乎有点奇怪。如果我想继续,我也可以将 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 中声明了更多接口(interface)列表。

关键的区别似乎是 XUnitPublisher类扩展了 hudson.tasks.Recorder 类,而 XUnitBuilder扩展 hudson.tasks.Builder .

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

鉴于这一切,我建议使用 xUnitPublisher。如果编译通过但某些测试失败,我将构建命令设置为返回 0。这样,Jenkins 给了我一个失败的编译状态和一个不稳定的状态,用于工作编译但测试失败。我喜欢这种方式。

提交历史并没有解释为什么会有这种荒谬的代码重复。我会理解一个是否是根据另一个来实现的,就像弃用时通常所做的那样……可能是因为每个都必须有不同的父类(super class)。

XUnitBuilder.java , XUnitPublisher.java

关于.net - 构建 xunit.xml 文件后,我应该使用 xUnitPublisher 还是 xUnitBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41423745/

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