启用“指定批处理大小”时,Azure DevOps版本中缺少控制台输出

Tyb*_*ybs 5 c# automated-tests vstest azure-devops

我们在Azure DevOps中运行了一个大型测试集(基于NUnit)。最近,我们在Visual Studio测试任务中启用了“重新运行失败的测试”选项。最初,由于VSTest中的一个错误,该错误无法处理自定义测试显示名称(这是我们的测试所必需的),因此无法正常工作。测试仍然只能运行一次。但是,通过设置批量大小,此问题已解决,最终可以正确重试测试。 重新运行失败的测试

它的效果非常好,除了一个奇怪的效果外……显然,详细的日志不再显示我们自己的自定义输出(由Console.WriteLine生成)。以前没有任何问题。我们现在得到的只是默认输出和最终测试结果。 电流输出

未启用“指定批处理大小”的日志提供了更多信息: 旧日志

日志本身仍在写:我们知道每次测试都(几乎)包含所有信息。这在测试结果中显示: 单项测试结果

同样,仅禁用批处理大小选项会使日志再次显示。

有谁知道导致这种现象的原因以及如何解决?到目前为止,在Console.Writeline / Trace.Writeline / Debug.Writeline等之间切换仍然无济于事,而且我还没有找到关于此特定问题的许多其他信息...并且在某些情况下,拥有一个完整的日志文件是必需的(或者更实用),因此如果我们设法同时进行重试和完整日志记录,那就太好了。

提前致谢!

Tyb*_*ybs 5

我也在developercommunity.visualstudio.com 上发布了这个问题。讨论花了一些时间,但总结一下,给出了以下答复:

\n
\n

支持的行为是将测试中的跟踪信息作为测试结果文件(trx)/标准控制台日志的一部分而不是构建日志的一部分(正如您在问题中提到的那样)。请注意,这也取决于所使用的测试框架。\xe2\x80\x99s 没有计划将跟踪信息从测试流到构建日志。当您打开批处理选项时,您看到的不同行为是由于内部执行流程发生了一些变化(最终所有流程将在未来几天收敛到与批处理选项相同)。我们建议不要依赖构建日志。相反,在测试选项卡中,您可以在测试用例/测试运行的上下文中获得更好的日志。

\n
\n

测试运行中找到的 trx 文件中应提供完整的测试运行输出。经核实,情况确实如此:

\n

完整测试运行Trx

\n

当在 Notepad++ 中打开文件时,我终于看到了完整运行的日志:

\n

完整测试运行日志

\n

- 所有这些行都是使用 Console.WriteLine() 编写的。

\n

- 如果 trx 文件多于一个,则最大的文件保存完整运行的日志:小文件仅包含所选测​​试的日志。

\n

注意:\n我们发现在测试运行超时期间,不会生成此文件。这已报告给 Microsoft 并被确认为一个问题:

\n
\n

明白了重点。我们正在 vstest 任务中进行高级诊断。例如,如果测试需要更多时间才能完成,我们将中止测试。在这种情况下,还将创建测试过程的转储,当然我们也会上传 trx。第二种情况,不是特定的测试花费时间,而是整体运行结束超时,我们将转储测试进程并中止运行。转储将帮助您调试问题。

\n
\n

将来的某个时候,这个转储应该可以使用。

\n