.NET 5.0 单元测试使用xunit/mstest/nunit均永久挂起超时求助
.NET 5.0 项目跨单元测试框架执行挂起问题解决方案
问题现象
无论使用xunit、mstest还是nunit单元测试框架,执行.NET 5.0项目的单元测试时都会永久挂起,重新生成解决方案无任何警告或错误,问题可稳定复现。测试项目为最简结构:包含一个输出“Hello World!”的控制台应用,以及一个对“引用整数加1”功能进行测试的简单用例。
测试输出日志如下:
Determining projects to restore... All projects are up-to-date for restore. testapp -> C:\Users\beene\Documents\coding\csharp\current_projects\testapp\testapp\bin\Debug\net5.0\testapp.dll TestProject1 -> C:\Users\beene\Documents\coding\csharp\current_projects\testapp\TestProject1\bin\Debug\net5.0\TestProject1.dll Test run for C:\Users\beene\Documents\coding\csharp\current_projects\testapp\TestProject1\bin\Debug\net5.0\TestProject1.dll (.NETCoreApp,Version=v5.0) Microsoft (R) Test Execution Command Line Tool Version 16.11.0 Copyright (c) Microsoft Corporation. All rights reserved. Starting test execution, please wait... A total of 1 test files matched the specified pattern. vstest.console process failed to connect to testhost process after 300 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout. Test Run Aborted.
根因定位
该问题与单元测试框架无关,是.NET 5 SDK、vstest 工具与本地环境的兼容性问题,常见触发原因包括:
- 本地安装的.NET 5 SDK 版本存在已知的vstest通信缺陷
- 系统代理/防火墙拦截了vstest.console与testhost进程的本地回环通信
- 测试项目直接引用了可执行项目(控制台应用)而非类库项目,导致测试主机启动时出现依赖加载异常
解决方案
按优先级依次尝试以下操作:
- 修正项目引用结构
将被测试的业务逻辑从控制台应用项目迁移到独立的.NET 5类库项目,测试项目仅引用类库项目,不直接引用控制台可执行项目。这是最简项目场景下最常见的触发原因。 - 升级/重装匹配的.NET 5 SDK
卸载当前本地安装的.NET 5 SDK,安装官方最后稳定版.NET 5.0.17 SDK,同时配套更新Visual Studio到2022最新版或者2019 16.11以上稳定版,确保vstest工具与SDK版本匹配。 - 排查本地网络拦截
临时关闭系统防火墙、第三方安全软件以及系统代理,再执行测试,确认是否是本地网络规则拦截了进程间本地通信。 - 添加测试运行配置
在测试项目根目录新建runsettings文件,加入以下配置调整超时限制,同时优化测试运行逻辑:
<?xml version="1.0" encoding="utf-8"?> <RunSettings> <RunConfiguration> <VSTEST_CONNECTION_TIMEOUT>1200</VSTEST_CONNECTION_TIMEOUT> <DisableAppDomain>True</DisableAppDomain> <DisableParallelization>True</DisableParallelization> </RunConfiguration> </RunSettings>
执行测试时指定使用该配置文件:dotnet test --settings .\test.runsettings
内容的提问来源于stack exchange,提问作者BeenEncoded
相关产品推荐
相关产品推荐

