我们在Azure DevOps中运行了一个大型测试集(基于NUnit)。最近,我们在Visual Studio测试任务中启用了“重新运行失败的测试”选项。最初,由于VSTest中的一个错误,该错误无法处理自定义测试显示名称(测试所需的显示名称),因此无法正常工作。测试仍然只能运行一次。但是,通过设置batch size,此问题已解决,最终可以正确重试测试。
除了一个奇怪的效果外,它的工作效果非常好……没有明显的原因,详细的日志不再显示我们自己的自定义输出(由Console.WriteLine生成)。以前没有任何问题。我们现在得到的只是默认输出和最终测试结果。
日志本身仍在写:我们知道每次测试都包含(几乎)所有信息。这在测试结果中显示:
此外,只需禁用批处理大小选项,即可再次显示日志。
是否有人知道导致此行为的原因以及如何解决?到目前为止,在Console.Writeline / Trace.Writeline / Debug.Writeline等之间切换仍然无济于事,而且我还没有找到有关此特定问题的其他信息...并且在某些情况下,拥有一个完整的日志文件是必需的(或者更实用),因此如果我们能够同时进行重试和完整日志记录,那就太好了。
谢谢!
答案 0 :(得分:0)
我也将question发布到了developercommunity.visualstudio.com。讨论花费了一些时间,但总结了一下,给出了以下答复:
”支持的行为是将测试的跟踪信息作为测试结果文件(trx)/标准控制台日志的一部分而不是构建日志的一部分(如您在问题中提到的那样) )。请注意,这也取决于所使用的测试框架。没有计划将跟踪信息从测试流到构建日志中。打开“批处理”选项时看到的不同行为是由于内部执行流会有所变化(最终所有流将在未来几天内收敛到与批处理选项相同的位置)。我们建议不要依赖构建日志。相反,test选项卡是您可以在上下文中获得更好日志的地方测试用例/测试运行。”
完整的测试运行输出应该在测试运行中找到的trx文件中可用。经检查,确实是这样:
在Notepad ++中打开文件时,我终于看到了完整运行的日志:
-所有这些行都是使用Console.WriteLine()编写的。
-如果trx文件多于一个,则最大的文件保存完整运行的日志:小的文件仅包含所选测试的日志。
注意: 我们发现在测试运行超时期间,不会生成此文件。这已经报告给Microsoft,并且被确认为问题:
”明白了这一点。我们正在研究vstest任务中的高级诊断。例如,如果测试需要更多时间来完成,我们将中止测试。在这种情况下,将转储测试过程第二种情况,不是垂直测试花费时间,而是整体运行结束了,我们将转储测试过程并中止运行,转储将帮助您调试问题。”
将来某个地方应该可以使用此转储。