You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2022中xUnit测试加载扩展失败及运行异常问题

问题解决:Visual Studio Test Explorer中xUnit测试挂起及适配器加载失败

问题现象

  • 在解决方案中添加xUnit测试项目,前3个测试运行正常;添加第4个Web API控制器测试后,Visual Studio Test Explorer运行全部测试时永久挂起,需手动结束vstesthost.exe进程
  • 使用xUnit 2.4.2版本时,Test Explorer提示加载xunit.runner.visualstudio.dotnetcore.testadapter.dll扩展失败;升级至2.6.2版本后,出现加载xunit.runner.visualstudio.uwp.testadapter.dll扩展失败的问题
  • 单个测试可执行通过但仍有错误提示,命令行执行dotnet test可正常运行所有测试

解决方案

1. 清理测试适配器缓存

Visual Studio的测试适配器缓存可能已损坏,按以下步骤清理:

  • 关闭Visual Studio
  • 删除以下目录中的缓存文件:
    • %USERPROFILE%\AppData\Local\Temp\VisualStudioTestExplorerExtensions
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\<你的VS版本>\ComponentModelCache
  • 重新打开Visual Studio,重新生成解决方案后再运行测试

2. 调整测试项目的依赖配置

  • 确保测试项目中仅引用适配当前项目类型的测试适配器:
    编辑测试项目的.csproj文件,移除不必要的适配器引用(比如非UWP项目删除UWP相关适配器依赖),只保留针对.NET Core/.NET的适配器:
    <PackageReference Include="xunit.runner.visualstudio" Version="2.6.2" PrivateAssets="all" />
    
    注意保留PrivateAssets="all",避免适配器被传递引用到其他项目
  • 确保测试项目的目标框架与Web API项目的目标框架一致,避免框架不兼容导致的异常

3. 禁用测试并行执行

xUnit默认并行执行测试,Web API控制器测试可能因共享资源(如测试服务器、数据库连接)引发死锁,导致进程挂起:

  • 在测试项目中添加xunit.runner.json文件,配置禁用并行:
    {
      "parallelizeTestCollections": false,
      "parallelizeAssembly": false
    }
    
  • 右键该文件,设置“复制到输出目录”为“如果较新则复制”

4. 检查Web API测试的资源释放

第4个Web API控制器测试可能未正确释放资源(如TestServer、HttpClient实例),导致进程无法正常退出:

  • 测试中使用using语句管理资源,示例:
    using var server = new TestServer(new WebHostBuilder().UseStartup<Startup>());
    using var client = server.CreateClient();
    // 测试逻辑代码
    
  • 避免在测试类构造函数或IDisposable.Dispose方法中持有未释放的资源

5. 更新Visual Studio及相关组件

确保Visual Studio为最新版本,安装所有可用更新:

  • 打开Visual Studio Installer,检查并安装更新
  • 确认已安装“.NET Core跨平台开发”工作负载以及“测试工具”组件

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 03:37:45