如何解决 dotnet 测试期间的堆栈溢出问题?
How to resolve stack overflow problem during dotnet test?
首先我的设置:
- .Net Core 3.1(从 2.2 迁移而来)
- xUnit 2.4.1
- xUnit 运行ner 2.4.1
- Visual Studio 2019 16.4.2
- Test.SDK 16.4.0
我刚刚从 .Net Core 2.2 迁移到 3.1。我只是修复了错误并将我的序列化程序更改为 System.Text。我的应用程序运行正常,但是...
Note: All my tests are integration tests which are using WebApplicationFactory
.
我总是使用 Visual Studio Test 运行ner 来 运行 所有测试,但是当我尝试 运行 All 我得到一个错误:
Notice that strange netcoreapp2.2
, while I'm specifically using .Net Core 3.1 in MyTests and MyApp project.
[10.01.2020 2:05:03.939 PM] System.InvalidOperationException: The following TestContainer was not found 'D:\Projects\MyApp\MyTests\bin\Debug\netcoreapp2.2\GrabGoApiTests.dll'
at Microsoft.VisualStudio.TestWindow.Client.TestContainer.TestContainerProvider.<GetTestContainerAsync>d__46.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.TestWindow.Controller.TestContainerConfigurationQueryByTestsBase.<QueryTestContainerConfigurationsAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.TestWindow.Controller.TestContainerConfigurationQuery.<GetTestContainerConfigurationsAsync>d__16.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.TestWindow.Controller.TestRunConfiguration.<UpdateAsync>d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.TestWindow.Controller.RunOperation.<RunTestsAsync>d__15.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.TestWindow.Controller.Operation.<<Execute>b__37_0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.TestWindow.Extensibility.ILoggerExtensions.<CallWithCatchAsync>d__10`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.VisualStudio.Telemetry.WindowsErrorReporting.WatsonReport.GetClrWatsonExceptionInfo(Exception exceptionObject)
然后我在想"Okay... Maybe VS is acting strange again I'll try running tests from console"
PS D:\Projekty\GrabGoAPI> dotnet test
Test run for D:\Projects\MyApp\MyTests\bin\Debug\netcoreapp3.1\GrabGoApiTests.dll(.NETCoreApp,Version=v3.1)
Microsoft (R) Test Execution Command Line Tool Version 16.3.0
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
The active test run was aborted. Reason: Test host process crashed : Stack overflow.
Test Run Aborted.
Total tests: Unknown
Passed: 101
Total time: 26,3009 Seconds
现在我来了。
我找到了 。但是我无法在 Visual Studio 中调试测试以找出导致问题的测试。
还有dotnet test --blame
每次都在指责随机测试。
如何找到导致 Whosebug 异常的原因?
我是因为 System.Text.Json 没有像 JSON.Net
那样处理 Reference Loop
。
更改为 JSON.Net 有帮助。
我通过安装 Microsoft.NET.Test.Sdk.
解决了这个问题
- 打开工具 选项卡
- 选择 NuGet 包管理器 子菜单
- 单击管理解决方案的 NuGet 程序包 菜单项
- 安装 Microsoft.NET.Test.Sdk
我收到了这个错误,它是由于重构后调用自身的方法引起的,所以谢谢测试。
首先我的设置:
- .Net Core 3.1(从 2.2 迁移而来)
- xUnit 2.4.1
- xUnit 运行ner 2.4.1
- Visual Studio 2019 16.4.2
- Test.SDK 16.4.0
我刚刚从 .Net Core 2.2 迁移到 3.1。我只是修复了错误并将我的序列化程序更改为 System.Text。我的应用程序运行正常,但是...
Note: All my tests are integration tests which are using
WebApplicationFactory
.
我总是使用 Visual Studio Test 运行ner 来 运行 所有测试,但是当我尝试 运行 All 我得到一个错误:
Notice that strange
netcoreapp2.2
, while I'm specifically using .Net Core 3.1 in MyTests and MyApp project.
[10.01.2020 2:05:03.939 PM] System.InvalidOperationException: The following TestContainer was not found 'D:\Projects\MyApp\MyTests\bin\Debug\netcoreapp2.2\GrabGoApiTests.dll'
at Microsoft.VisualStudio.TestWindow.Client.TestContainer.TestContainerProvider.<GetTestContainerAsync>d__46.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.TestWindow.Controller.TestContainerConfigurationQueryByTestsBase.<QueryTestContainerConfigurationsAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.TestWindow.Controller.TestContainerConfigurationQuery.<GetTestContainerConfigurationsAsync>d__16.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.TestWindow.Controller.TestRunConfiguration.<UpdateAsync>d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.TestWindow.Controller.RunOperation.<RunTestsAsync>d__15.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.TestWindow.Controller.Operation.<<Execute>b__37_0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.TestWindow.Extensibility.ILoggerExtensions.<CallWithCatchAsync>d__10`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.VisualStudio.Telemetry.WindowsErrorReporting.WatsonReport.GetClrWatsonExceptionInfo(Exception exceptionObject)
然后我在想"Okay... Maybe VS is acting strange again I'll try running tests from console"
PS D:\Projekty\GrabGoAPI> dotnet test
Test run for D:\Projects\MyApp\MyTests\bin\Debug\netcoreapp3.1\GrabGoApiTests.dll(.NETCoreApp,Version=v3.1)
Microsoft (R) Test Execution Command Line Tool Version 16.3.0
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
The active test run was aborted. Reason: Test host process crashed : Stack overflow.
Test Run Aborted.
Total tests: Unknown
Passed: 101
Total time: 26,3009 Seconds
现在我来了。
我找到了
还有dotnet test --blame
每次都在指责随机测试。
如何找到导致 Whosebug 异常的原因?
我是因为 System.Text.Json 没有像 JSON.Net
那样处理 Reference Loop
。
更改为 JSON.Net 有帮助。
我通过安装 Microsoft.NET.Test.Sdk.
解决了这个问题- 打开工具 选项卡
- 选择 NuGet 包管理器 子菜单
- 单击管理解决方案的 NuGet 程序包 菜单项
- 安装 Microsoft.NET.Test.Sdk
我收到了这个错误,它是由于重构后调用自身的方法引起的,所以谢谢测试。