如何防止 TeamCity XML 报告处理失败构建

How to prevent TeamCity XML report processing from failing build

我有一些构建内容可能会或可能不会生成 TRX 报告,具体取决于配置;此构建内容在 TeamCity 上 运行。我还启用了 XML 报告处理构建功能,因此可以在生成测试结果时进行报告。如果未找到 TRX 文件,此构建功能似乎无法构建。是否有任何方法可以解析 TRX 结果(如果存在)但避免构建失败?

简短的回答是,还没有。

目前 JetBrains 提出了一个问题来添加此功能 https://youtrack.jetbrains.com/issue/TW-17939 - 您可以去那里投票,使其具有更高的优先级。

这个问题也类似于:

  • Conditionally execute a TeamCity build step

这是防止 XML/TRX 报表处理器出错的方法:将虚拟 TRX 文件复制到处理器搜索的目录中。我拿了一个从成功测试 运行 生成的 TRX 文件,剥离了一些内容并用占位符值替换了各种属性,并将 UnitTestResult 结果标记为 "NotExecuted"。 TC会这样显示测试结果:

这是我使用的虚拟 TRX 文件的内容。这有点 hack,但至少它可以防止构建失败。

<?xml version="1.0" encoding="UTF-8"?>
<TestRun id="0240f32b-a8c9-4ad5-ae23-c7b64fe32cd2" name="TrxPlaceholder" runUser="User_Placeholder" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
    <Times creation="2018-04-06T14:10:21.7011071-07:00" queuing="2018-04-06T14:10:21.7011176-07:00" start="2018-04-06T14:10:20.5775149-07:00" finish="2018-04-06T14:10:21.7220949-07:00" />
    <TestSettings name="default" id="40f31577-b2c8-4f67-845f-58155fce4a2b">
      <Deployment runDeploymentRoot="Placeholder" />
    </TestSettings>
    <Results>
      <UnitTestResult executionId="9658777a-f6f7-40cb-a331-95cfec3d7b91" testId="7a75abda-f387-442f-bcb3-fca6aa0ce577" testName="TrxPlaceholder" computerName="Placeholder" duration="00:00:00.0073781" startTime="2018-04-06T14:10:21.3332054-07:00" endTime="2018-04-06T14:10:21.5447253-07:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="NotExecuted" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="9658777a-f6f7-40cb-a331-95cfec3d7b91" />
    </Results>
    <TestDefinitions>
      <UnitTest name="TrxPlaceholder" storage="c:\temp\TrxPlaceholder.dll" id="7a75abda-f387-442f-bcb3-fca6aa0ce577">
        <Execution id="9658777a-f6f7-40cb-a331-95cfec3d7b91" />
        <TestMethod codeBase="c:\temp\TrxPlaceholder.dll" executorUriOfAdapter="executor://mstestadapter/v2" className="TrxPlaceholder" name="TrxPlaceholder" />
      </UnitTest>
    </TestDefinitions>
    <TestLists>
      <TestList name="Results Not in a List" id="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
      <TestList name="All Loaded Results" id="19431567-8539-422a-85d7-44ee4e166bda" />
    </TestLists>
<ResultSummary outcome="Completed">
    <Counters total="0" executed="0" passed="0" failed="0" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" />
</ResultSummary>
</TestRun>