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

Nig*_*888 6 c# nunit visual-studio test-explorer visual-studio-2017

当我在Visual Studio测试浏览器的早期版本运行测试,并有导致构建亚军崩溃的问题(如AccessViolationException,StackOverflowException,OutOfMemoryException,等),它会输出显示异常类型的消息抛出如何启用日志获得更多细节.

使用Visual Studio 2017社区版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)==========

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

注:我已经打开了一个与NUnit的问题,本次调查询问如何确定在哪些测试导致崩溃.我已经孤立(并解决)了两个原因.

  1. Debug.Assert失败时,.NET Core 2.0会崩溃
  2. 由于在32位下运行,测试运行器的虚拟内存不足.

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

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

小智 1

已经报告了几个与此类似的问题。这似乎是 Entity Framework Core 的一个错误,尚未修复。这也是 .NET Core 命令行 (CLI) 中的一个问题,现已修复。

开放问题

SqlLite.FunctionalTests 有时在 Ubuntu #8642 上失败也有相同的问题,不同的应用程序类型,但相同的问题。OP 也很难找到错误的踪迹。

The active test run was aborted. Reason: 
null
Run Code Online (Sandbox Code Playgroud)

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

在分类中再次讨论并决定我们需要从测试运行者那里获取更多信息。对Microsoft/vstest#527发表评论,询问更多信息。暂时标记为阻止,直到我们从 vstest 团队获得一些信息。

6月22日关闭

有一个没有说明测试运行被中止的原因。#527
被标记为重复项:
显示导致测试运行崩溃的测试(测试资源管理器)#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 预览版 2 中可用。

如何获取崩溃日志

除了确保您已启用诊断(我确信您已启用)或在控制台上运行它之外。

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

您可以启用 --diag:log.txt 开关来获取更多日志并分析 log.txt 和 log.*.host.txt 以获取更多详细信息吗?

由于没有重现而关闭

没有解释当静态构造函数抛出异常时中止测试。#334报告了同样的问题:

The active test run was aborted. Reason:
Run Code Online (Sandbox Code Playgroud)

没有理由。

由于没有重现而被关闭。


解决在主线程上运行 nunit 测试的需要使用主循环运行单元测试

  • 你好,谢谢你的提示。我根本没有使用实体框架,所以可能不是这样。不过,我已经发现了一个原因。一些测试在后台线程上运行 NUnit 断言,这会引发异常。这些异常在 .NET Framework 中被完全忽略,但在 .NET Core 2.0 中它会导致致命崩溃。不管怎样,我需要弄清楚如何将失败封送回主线程 - 有什么想法吗? (2认同)