gpt4 book ai didi

jenkins - junit 插件未显示 jenkins 中所有测试的结果

转载 作者:行者123 更新时间:2023-12-01 12:13:36 28 4
gpt4 key购买 nike

我有一个测试套件,其中一些 XML 文件是在运行单元测试 (junit) 后生成的。还有一些其他的 protractor 自动化测试使用 jasmine junit xml 报告器( https://github.com/larrymyers/jasmine-reporters )来创建 XML 文件。我在 jenkins 作业的同一目录中生成两组 XML 文件,我使用了 junit 插件(发布 JUnit 测试结果报告)来发布报告。所以,现在,在作业完成后,单元测试生成了 9 个 xml,jasmine-reporter 生成了 2 个 XML,因此如下所述,从我的 jenkins 作业控制台输出中可以识别出有 11 个 xml 文件来自我在作业配置中指定的模式。

22:49:52 [xUnit] [INFO] - [JUnit] - 11 test report file(s) were found with the 
pattern '**/tests/target/failsafe-reports/junitreports/*.xml' relative to
'/home/jenkins/workspace/projectName' for the testing framework
'JUnit'.

但是,问题是,当我单击 jenkins 作业 UI 中的“测试结果”链接时,它只显示与单元测试生成的 xml 相关的所有测试,而没有显示与从 jasmine 报告生成的 XML 相关的任何结果。需要帮助了解为什么 jenkins 没有显示任何与 jasmine XML 相关的测试结果。

enter image description here

下面是单元测试生成的示例 XML(当单击测试结果链接时,jenkins 在 ui 中显示)。
<!--
Generated by org.testng.reporters.JUnitReportReporter
-->
<testsuite hostname="someHostName"
name="packageName.Class1" tests="22" failures="0" timestamp="16
Apr 2018 05:47:59 GMT" time="69.663" errors="0">
<testcase name="test1" time="2.488"
classname="packageName.Class1"/>
<testcase name="test2" time="5.808"
classname="packageName.Class1"/>
</testsuite>

下面是 jasmine junit xml 报告器生成的示例 XML(当单击测试结果链接时,jenkins 在其 UI 中未显示此结果)
<testsuites>
<testsuite name="chromeTestItemDetailsPage" timestamp="2018-04-16T05:48:43"
hostname="localhost" time="29.357" errors="0" tests="22" skipped="0"
disabled="0" failures="0">
<testcase classname="chromeTestItemDetailsPage" name="ItemTitleDisplayed"
time="0.895"/>
<testcase classname="chromeTestItemDetailsPage" name="ItemPriceDisplayed"
time="0.966"/>
</testsuite>
</testsuites>

最佳答案

我认为您在这里遇到了 Jenkins 问题。

Jenkins 使用属性 classname以及 testname<testcase>在 JUnit XML 报告中对 UI 上的测试结果进行分类。此外 Jenkins 预计 classname由包名后跟一个点和类名组成:

<testcase classname="packagename.classname" name="testname">

如果不存在点,Jenkins 将假定包为“root”。如果存在多个点,则仅将最后一个点识别为分隔符。见 this question为了更好的解释。

如果您查看上面的 XML 报告,您会注意到,单元测试的 XML 在 classname 中指定了一个包名。属性,而 Jasmine 报告器的 XML 没有。我认为缺少包名是测试结果没有显示的原因。显然 Jenkins 仅使用包“root”,如果根本不存在包。如果至少有一个带有包名的测试用例,则所有其他没有包的测试用例都“丢失”。

有两种可能的解决方案:
  • 报告 Jenkins 的错误,因为上述行为是意外的
  • 修改 Jasmine 报告器构造一个 classname图案package.class .在 https://github.com/larrymyers/jasmine-reporters/pull/186/files 有一个拉取请求这将允许用户函数修改类名。
  • 关于jenkins - junit 插件未显示 jenkins 中所有测试的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49852378/

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