.Net 5 测试主机在线程中抛出异常时崩溃

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)

小智 0

配置测试主机时,需要确保使用应用程序中间件启动 TestHost,否则不会处理异常,并且将在测试中抛出异常。