如何防止 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>
我有一些构建内容可能会或可能不会生成 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>