启用 "Specify a batch size" 时 Azure DevOps 版本中缺少控制台输出

Console output missing in Azure DevOps release when enabling "Specify a batch size"

我们在 Azure DevOps 中有一个大型测试集 运行ning(基于 NUnit)。最近我们在 Visual Studio 测试任务中启用了 "Rerun failed tests" 选项。起初,由于 VSTest 中处理自定义测试显示名称(我们的测试需要)的错误,这不起作用。测试仍然只会 运行 一次。但是,通过设置 batch size,这个问题得到解决,测试最终可以正确重试。

它工作得很好,除了一个奇怪的效果......没有明显的原因,详细的日志不再显示我们自己的自定义输出(由 Console.WriteLine 生成)。这以前没有问题。我们现在得到的只是默认输出和最终测试结果。

未启用 "Specify a batch size" 的日志提供更多信息:

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

此外,只需禁用批量大小选项即可使日志再次显示。

有没有人知道导致此行为的原因以及如何解决?到目前为止,在 Console.Writeline/Trace.Writeline/Debug.Writeline 等之间切换并没有帮助,而且我还没有找到关于这个特定问题的其他信息......并且在某些情况下有一个完整的日志文件是必要的(或者更实用的方式),所以如果我们能够同时进行重试和完整日志记录,那就太好了。

提前致谢!

我也在 developercommunity.visualstudio.com 上发布了 question。讨论花了点时间,总结一下,得到如下回复:

"The supported behavior is to have the Trace information from the tests be present as part of the test results file (trx)/Standard console logs and not part of the build logs (as you have mentioned in your question). Do note this is also dependent on the test framework being used. There’s no plan to have the trace information flow to the build logs from the test. The different behavior you are seeing when you turn on Batching option is due to the fact the internal flow of execution changes a bit (and eventually all flows will converge to same as batch option in coming days). we recommend not to take dependency on build logs. Instead the test tab is the place you will get in better logs in context to test case/test run."

完整的测试 运行 输出应该在测试 运行 中找到的 trx 文件中可用。经查,确实是这样:

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

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

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

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

"got the point here. we are working on Advanced diagnostics in vstest task. for instance we will abort the test if a test is taking more time to complete. in this case a dump of the test process will be created as well and ofcourse we will have trx also getting uploaded. the second scenario where not a perticular test is taking time but overall run ends time out we will take a dump of test process and abort the run. Dumps will help you debug the issue."

在未来的某个地方,这个转储应该可以使用。