Ita*_*aim 7 c# multithreading vstest .net-5
这是我得到的错误:
========== Starting test run ==========
NUnit Adapter 4.2.0.0: Test execution started
Running selected tests in C:\Users\itaib\source\repos\TestHostCrashTest\TestHostCrashTest\bin\Debug\net5.0\TestHostCrashTest.dll
NUnit3TestExecutor discovered 1 of 1 NUnit test cases using Current Discovery mode, Non-Explicit run
The active test run was aborted. Reason: Test host process crashed : Unhandled exception. System.Exception: some value
at TestHostCrashTest.CrashTest.<>c.<CrashTestHost>b__0_0() in C:\Users\itaib\source\repos\TestHostCrashTest\TestHostCrashTest\CrashTest.cs:line 14
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
========== Test run aborted: 0 Tests (0 Passed, 0 Failed, 0 Skipped) run in < 1 ms ==========
Run Code Online (Sandbox Code Playgroud)
当我运行这个测试时:
using NUnit.Framework;
using System.Threading;
namespace TestHostCrashTest
{
public class CrashTest
{
[Test]
public void CrashTestHost()
{
var t = new Thread(() =>
throw new Exception("some value")
);
t.IsBackground = true;
t.Start();
t.Join();
}
}
}
Run Code Online (Sandbox Code Playgroud)
它在 .net Framework 4.6.1 上运行良好,但在 .net 5.0 上崩溃。
我尝试AppDomain.CurrentDomain.UnhandledException
在其中没有任何内容的情况下进行注册,但没有成功。不幸的是,目前还不能优雅地处理异常。
有什么解决方法吗?
顺便说一句,这是.csproj
文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!--<TargetFramework>net461</TargetFramework>-->
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
<PackageReference Include="NUnit" Version="3.13.2" />
<PackageReference Include="NUnit3TestAdapter" Version="4.2.0" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)