如何确定导致测试资源管理器崩溃的异常?

时间:2017-08-30 07:27:41

标签: c# visual-studio nunit visual-studio-2017 test-explorer

当我在Visual Studio Test Explorer的早期版本中运行测试时,出现导致构建运行器崩溃的问题(例如AccessViolationExceptionStackOverflowExceptionOutOfMemoryException等) ,它会输出一条消息,显示抛出的异常类型以及如何启用日志以获取更多详细信息。

使用Visual Studio 2017 Community Edition版本15.3.2和.NET Core 1.0,当发生崩溃时,测试输出中显示的是:

  

[8/30/2017 3:03:42 AM错误]活动的测试运行已中止。

     

[8/30/2017 3:03:42 AM Informational] ==========运行测试完成:1030 run(0:41:12.5762484)==========

如何确定导致构建运行器崩溃的异常类型(最好是使用堆栈跟踪)?

注意:我在此次调查期间打开了issue with NUnit,询问如何确定哪些测试导致崩溃。我已经分离(并解决了)其中两个原因。

  1. .NET Core 2.0 crashes fatally when a Debug.Assert fails
  2. The test runner was running out of virtual memory由于在32位以下运行。
  3. 但至少还有一个问题导致崩溃。我试图弄清楚为什么测试运行程序在Visual Studio 2017中崩溃但在命令行上没有崩溃。

    另请注意,在.NET Framework上运行时不会发生此特定崩溃,因此建议使用不支持.NET Core 1.0或.NET Core 2.0的命令行工具(例如vstest.console.exe)没用。

1 个答案:

答案 0 :(得分:1)

这是几个与此类似的报道问题。它似乎是实体框架核心的一个错误,尚未修复。这也是.NET Core命令行(CLI)中的一个问题,已经修复。

打开问题

SqlLite.FunctionalTests sometimes fail on Ubuntu #8642也有同样的问题,不同的应用类型,但同样的问题。 OP也难以找到错误的痕迹。

The active test run was aborted. Reason: 
null

当前打开的一个已标记为已阻止:

  

再次讨论分类,并决定我们需要获得更多信息   来自试验跑步者。评论Microsoft/vstest#527要求   更多信息。现在标记为已阻止,直到我们从中获取一些信息   vstest团队。

于6月22日关闭

有一个The reason why the test run was aborted is not indicated. #527
 被标记为副本:
 Show the test which crashed the test run (test explorer) #627

解决方案

  

这是在dotnet-cli的最新开发版本中修复的   2.0.0 preview1-005963。从https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-dev-win-x64.latest.zip下载。

     

我们也为VS修了它。将在具有修复的构建时更新   可用。

     

注意:由于dotnet/cli#6535,将显示netcoreapp2.0的问题。

并且

  

... / fix在VS15.3.0 preview2中可用。

如何获取崩溃日志

除了确保您启用诊断功能(我确信您拥有),或在控制台上运行诊断程序。

来自github问题的comment 显示导致测试运行崩溃的测试(测试资源管理器)#627

  

您可以启用--diag:log.txt开关来获取更多日志并进行分析   log.txt和log。*。host.txt了解更多详情?

关闭为无重复

No explanation of aborting test when a static constructor throws exception. #334报告了同样的问题:

The active test run was aborted. Reason:

没理由。

它被关闭,因为没有repro。

解决在主线程Running unit tests with a main loop上运行nunit测试的需要。