【问题标题】:How do I determine what exception caused Test Explorer to crash?如何确定导致测试资源管理器崩溃的异常?
【发布时间】:2017-09-09 15:28:40
【问题描述】:

当我在以前版本的 Visual Studio 测试资源管理器中运行测试时,出现导致构建运行程序崩溃的问题(例如 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 信息] ========== 运行测试完成:1030 次运行 (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 位下运行。

但至少还有一个问题会导致崩溃。我试图弄清楚为什么测试运行程序在 Visual Studio 2017 中崩溃但在命令行上没有崩溃。

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

【问题讨论】:

  • 我正在使用 Visual Studio 2017 社区版 15.3.2 版。不,我没有使用 Resharper。
  • EventViewer 中有什么可以提供帮助的信息吗?
  • 您已启用日志记录? MSDN: How to enable Unit Test explorer logs?,更多信息on SO here。这肯定会给你线索..
  • @NightOwl888 您是否尝试检查事件查看器日志以查看Windows Logs -> Application. 下是否有任何可疑的错误条目,并且在通过命令行检查的过程中您是否能够使用查看日志文件Diag/ 论据?
  • @NightOwl888 在Visual Stuio 2017@NightOwl888 上提出了类似的问题

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


【解决方案1】:

已经报告了几个与此类似的问题。这似乎是尚未修复的 Entity Framework Core 的错误。这也是 .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 将显示问题。

还有

.../修复在 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:

没有理由。

它已关闭,因为没有复制。


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

【讨论】:

  • 您好,感谢您的提示。我根本没有使用实体框架,所以可能不是这样。不过,我发现了一个原因。一些测试在后台线程上运行 NUnit 断言,这会引发异常。这些异常在 .NET Framework 中被完全忽略,但在 .NET Core 2.0 中却导致了致命的崩溃。无论哪种方式,我都需要弄清楚如何将故障恢复到主线程 - 有什么想法吗?
猜你喜欢
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多