首页 > 解决方案 > Jenkins JUnit 在 XML 文件中找不到结果

问题描述

美好的一天!所以我一直在尝试不同的方法来格式化我的 XML 自动化测试结果,以便 JUnit 从中提取。我已经能够让它找到文件,但它说没有结果:

[Pipeline] junit
Recording test results
None of the test reports contained any result
[Pipeline] 

有问题的文件是虚幻自动化测试的输出,它是 json 格式,我有一个将相关数据转换为 XML 的函数,输出如下(带有“项目”,因为它仍未公布):

<?xml version="1.0" encoding="utf-8"?>
<testsuite tests="3" failures="2" time="5.7150259017944336">
  <testcase name="Failing Test" classname="project.Failing Test" status="Fail">
    <failure>Fail</failure>
    <output message="Expected 'An Error occurred' to be true." type="Error">D:\project\Plugins\projectTests\Source\projectTests\Private\Examples\ExampleTests.cpp 32</output>
  </testcase>
  <testcase name="Communication States" classname="<project>.VoIP.Communication States" status="Fail">
    <failure>Fail</failure>
    <output message="req_sessiongroup_remove_session failed for 1001:Target Object Does Not Exist" type="Warning">D:\Engine\Source\Runtime\Core\Private\Logging\LogMacros.cpp 92</output>
    <output message="Should be transmitting to World Channel after Joining. Aborting Test" type="Error">D:\Engine\Source\Runtime\Core\Private\Logging\LogMacros.cpp 92</output>
    <output message="Uninitializing Vivox Client" type="Info">D:\Engine\Source\Runtime\Core\Private\Logging\LogMacros.cpp 92</output>
  </testcase>
  <testcase name="Passing Test" classname="project.Passing Test" status="Success">
    <success>Success</success>
  </testcase>
</testsuite>

JUnit 在寻找什么?!?! jUnit format only allows one <failure> child for each <testcase>

我已经将输出读取为失败,失败,我已将其全部包含在标签中,以及我不记得的各种其他合并。我很茫然.....

标签: jenkinsjunitjenkins-pipelinejenkins-groovy

解决方案


您的转换器似乎不小心将项目转换为 XML 标记。一个有效的 XML 表示是这样的:

<?xml version="1.0" encoding="utf-8"?>
<testsuite tests="3" failures="2" time="5.7150259017944336">
  <testcase name="Failing Test" classname="project.Failing Test" status="Fail">
    <failure>Fail</failure>
    <output message="Expected 'An Error occurred' to be true." type="Error">D:\project\Plugins\projectTests\Source\projectTests\Private\Examples\ExampleTests.cpp 32</output>
  </testcase>
  <testcase name="Communication States" classname="project.VoIP.Communication States" status="Fail">
    <failure>Fail</failure>
    <output message="req_sessiongroup_remove_session failed for 1001:Target Object Does Not Exist" type="Warning">D:\Engine\Source\Runtime\Core\Private\Logging\LogMacros.cpp 92</output>
    <output message="Should be transmitting to World Channel after Joining. Aborting Test" type="Error">D:\Engine\Source\Runtime\Core\Private\Logging\LogMacros.cpp 92</output>
    <output message="Uninitializing Vivox Client" type="Info">D:\Engine\Source\Runtime\Core\Private\Logging\LogMacros.cpp 92</output>
  </testcase>
  <testcase name="Passing Test" classname="project.Passing Test" status="Success">
    <success>Success</success>
  </testcase>
</testsuite>

推荐阅读