我有一个vNext构建,其中运行了一些NUnit测试并发布了结果。然而,测试生成的输出未被发布,尽管在相应的XML文件中发现了它。
例如:
我非常希望能够将此输出与测试结果一起发布。我该怎么做?
附言:
发布还有另一个问题。运行持续时间在顶部窗格中报告为4小时59分钟,但在底部详细信息窗格中是正确的10:48.176分钟。4小时59分钟看起来非常像5小时,这是EST和UTC之间的时间差异。测试在Octopus服务器上运行,并由vNext构建获取。也许某个地方存在时区混淆。
编辑1:
我们有一个本地TFS
编辑2:
检查
例如:
但是,如果我检查相应的XML文件 - 它就在那里:
请注意<output>
元素。我非常希望能够将此输出与测试结果一起发布。我该怎么做?
附言:
发布还有另一个问题。运行持续时间在顶部窗格中报告为4小时59分钟,但在底部详细信息窗格中是正确的10:48.176分钟。4小时59分钟看起来非常像5小时,这是EST和UTC之间的时间差异。测试在Octopus服务器上运行,并由vNext构建获取。也许某个地方存在时区混淆。
编辑1:
我们有一个本地TFS
编辑2:
检查
Publish Test Results
任务的源代码会发现它使用Microsoft.TeamFoundation.TestClient.PublishTestResults
程序集来解析NUnit XML测试结果。具体来说,以下C#代码用于解析test-case
元素(NUnit3ResultsXmlReader.cs):if (testCaseResultNode.Attributes["result"] != null)
{
testCaseResultData.TestCaseResult.Outcome = !string.Equals(testCaseResultNode.Attributes["result"].Value, "Passed", StringComparison.OrdinalIgnoreCase) ? (!string.Equals(testCaseResultNode.Attributes["result"].Value, "Failed", StringComparison.OrdinalIgnoreCase) ? (!string.Equals(testCaseResultNode.Attributes["result"].Value, "Skipped", StringComparison.OrdinalIgnoreCase) ? TestOutcome.Inconclusive.ToString() : TestOutcome.NotExecuted.ToString()) : TestOutcome.Failed.ToString()) : TestOutcome.Passed.ToString();
XmlNode xmlNode1 = testCaseResultNode.SelectSingleNode("failure");
if (xmlNode1 != null)
{
XmlNode xmlNode2 = xmlNode1.SelectSingleNode("message");
XmlNode xmlNode3 = xmlNode1.SelectSingleNode("stack-trace");
testCaseResultData.TestCaseResult.ErrorMessage = xmlNode2 != null ? xmlNode2.InnerText : (string) null;
testCaseResultData.TestCaseResult.StackTrace = xmlNode3 != null ? xmlNode3.InnerText : (string) null;
XmlNode xmlNode4 = testCaseResultNode.SelectSingleNode("output");
if (!string.IsNullOrWhiteSpace(xmlNode4 != null ? xmlNode4.InnerText : (string) null))
testCaseResultData.ConsoleLog = xmlNode4.InnerText;
}
}
由此可见,组装作者认为测试输出仅在测试用例失败时才有用。这是一个不幸的决定,因为他们无权决定何时使用输出。如果它在测试结果XML中,则应该发布。
开了一个新问题 https://github.com/Microsoft/azure-pipelines-tasks/issues/8979
开了一个Azure DevOps功能请求 - https://developercommunity.visualstudio.com/idea/432166/the-publish-tests-azure-devops-plugin-should-publi.html