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

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

它工作得很棒,除了一个奇怪的效果外……显然,详细的日志不再显示我们自己的自定义输出(由Console.WriteLine生成)。以前没有任何问题。我们现在得到的只是默认输出和最终测试结果。
启用“指定批处理大小”时,Azure DevOps版本中缺少控制台输出 - c#

未启用“指定批处理大小”的日志提供了更多信息:
启用“指定批处理大小”时,Azure DevOps版本中缺少控制台输出 - c#

日志本身仍在写:我们知道每次测试都(几乎)包含所有信息。测试结果中显示了这一点:
启用“指定批处理大小”时,Azure DevOps版本中缺少控制台输出 - c#

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

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

提前致谢!

参考方案

我也将question张贴在developercommunity.visualstudio.com上。讨论花费了一些时间,但总结起来,给出了以下响应:

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

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

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

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

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

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

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

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

“明白了这一点。我们正在vstest任务中进行高级诊断。例如,如果测试需要更多时间来完成,我们将中止测试。在这种情况下,也会创建测试过程的转储,当然,第二种情况是不是垂直测试花费时间,但总体运行结束超时,因此我们将转储测试过程并中止运行。转储将帮助您调试问题。”

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

Azure SQLite插入 - c#

我有一个Azure云应用,我正在尝试将用户上传的数据存储在〜/ AppData / mydb.db中的SQLite数据库中。由于存在许多问题,因此我不得不部署System.Data.SQLite,因此我修改了代码以使用此sharp-sqlite库。在调试模式下插入数据时,一切正常。在Azure上部署时,用户提供的数据将插入SQLite数据库。在此过程中不会引…

Windows Azure-清理WADLogsTable - c#

我已经阅读了有关Windows Azure中DiagnosticMonitor使用的WADLogsTable表是否会自动修剪旧日志条目的冲突信息。我猜它不会,反而会永远增长-花费我钱。 :)如果是这样,是否有人有一个很好的代码示例,说明如何从该表中手动清除旧日志条目?也许基于时间戳?我会定期从辅助角色运行此代码。 参考方案 Windows Azure Dia…

路径中的Python Azure Apps 404 - python

我遵循此Create a Python app in Azure App Service on Linux并使用以下功能上传了代码:@app.route('/predict_json', methods=['POST']) def add_message(): content = request.json tweets…

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制

LeetCode题解统计城市的所有灯泡

这个是我刚毕业的时候,一个真实的面试题,这是一个开放题。题目描述:想办法,将一个城市的所有灯泡数量统计出来。题解:费米估算法1、如果某个城市常驻人口有1000万2、假设每5人居住在一套房里,每套房有灯泡5只,那么住宅灯泡共有1000万只3、假设公众场所每10人共享一只灯泡,那么共有100万只4、主要的这两者相加就得出了1100万只当然实际上这是估算的,具体应…