我们将NUnit测试执行从TeamCity迁移到了Azure DevOps。迄今为止最大的问题之一-无法查看绿色(通过)测试的控制台输出。 DevOps确实缺少此基本功能,还是我根本不知道在哪里看?
这是如何查看控制台输出以进行失败的测试:
更新: 在文档中有一个“提示”(https://docs.microsoft.com/en-us/azure/devops/pipelines/test/review-continuous-test-results-after-build?view=azure-devops):
如果使用Visual Studio测试任务运行测试,则诊断输出 从测试记录(使用Console.WriteLine,Trace.WriteLine或 TestContext.WriteLine方法),将作为附件 测试失败。
文本明确指出“测试失败”。看起来确实没有办法(没有简便方法)查看未失败测试的控制台输出,这非常令人沮丧。
答案 0 :(得分:3)
Azure DevOps不显示通过测试的控制台输出:
该产品当前不支持通过打印控制台日志以通过测试,并且我们目前还没有计划在不久的将来对此进行支持。
他们建议将控制台输出写入文件并作为测试附件上载该文件:
但是,要实现您想要的目标,您几乎在正确的道路上。将必要的信息写入文件并作为测试附件上传是正确的方法。您可以使用此API附加文件,该文件将作为测试用例级别的附件自动上传到azure devops中:https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.testtools.unittesting.testcontext.addresultfile?view=mstest-net-1.2.0
还有另一种获得成功测试输出的方法:
您的版本将带有文件扩展名.trx
的附件。这是一个XML文件,每个测试都包含一个Output
元素(另请参见https://stackoverflow.com/a/55452011):
<TestRun id="[omitted]" name="[omitted] 2020-01-10 17:59:35" runUser="[omitted]" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Times creation="2020-01-10T17:59:35.8919298+01:00" queuing="2020-01-10T17:59:35.8919298+01:00" start="2020-01-10T17:59:26.5626373+01:00" finish="2020-01-10T17:59:35.9209479+01:00" />
<Results>
<UnitTestResult testName="TestMethod1">
<Output>
<StdOut>Test</StdOut>
</Output>
</UnitTestResult>
</Results>
</TestRun>
答案 1 :(得分:1)
是的,看起来这确实是DevOps中缺少的功能。
我们可以想到的(唯一的?)解决方法是将所有控制台输出写入日志文件...然后将此日志文件作为附件添加到测试的TearDown方法中:
TestContext.AddTestAttachment(testLogs);