visual studio测试不运行主要因缺少测试适配器、项目sdk或targetframework配置错误、outputpath冲突及调试符号缺失;需安装对应nuget包、修正.csproj配置、恢复默认输出路径并确保启用调试符号。

Visual Studio里测试不运行,多半是没装测试适配器
VS默认不自带完整测试运行环境,特别是.NET 6+项目或xUnit/NUnit项目,Test Explorer 窗口可能显示“未找到测试”,或者点击“运行”没反应。核心原因是缺少对应框架的测试适配器(Test Adapter)。
解决方法很简单:
- 打开
Tools → NuGet Package Manager → Manage NuGet Packages for Solution - 切换到
Browse标签页,搜索并为测试项目安装对应包:
• xUnit:安装xunit+xunit.runner.visualstudio
• NUnit:安装NUnit+NUnit3TestAdapter
• MSTest:安装Microsoft.NET.Test.Sdk+MSTest.TestAdapter - 安装后重启 VS 或点击
Test Explorer → Refresh(或按Ctrl+R, A)
Test Explorer找不到测试?检查项目 SDK 和 TargetFramework
常见于新建的 Class Library 项目手动改成了测试项目,但 SDK 仍是 Microsoft.NET.Sdk,而非测试专用的 Microsoft.NET.Sdk.TestTools(MSTest)或未正确声明测试框架依赖。
以 .NET 6+ 的 xUnit 为例,.csproj 必须包含:
<project sdk="Microsoft.NET.Sdk"><propertygroup><targetframework>net6.0</targetframework><implicitusings>enable</implicitusings><nullable>enable</nullable></propertygroup><itemgroup><packagereference include="xunit" version="2.8.1"></packagereference><packagereference include="xunit.runner.visualstudio" version="2.8.1"><includeassets>runtime; build; native; contentfiles; analyzers; buildtransitive</includeassets><privateassets>all</privateassets></packagereference></itemgroup></project>
注意:xunit.runner.visualstudio 的 PrivateAssets="all" 是必须的,否则 VS 无法加载测试发现器。
Visual Studio 18.8.1 官方固定版本安装引导程序,当前条目使用微软发布历史中的 Professional Web Installer,适合旧项目兼容、环境回退、复现特定构建链和排查版本差异等场景。
点了“运行”但测试状态一直是“正在排队”,可能是输出路径冲突
VS 测试主机(vstest.console.exe)会把编译后的测试程序集复制到临时目录执行。如果项目输出路径被手动改过(比如设为 bin\ 下某固定子目录),或多个测试项目共用同一 OutputPath,就会因文件锁或覆盖导致卡在“正在排队”。
检查并修正方式:
- 右键测试项目 →
Properties → Build → Output path,确保是默认值(如bin\Debug\net6.0\) - 不要在
.csproj中硬编码<outputpath></outputpath>,尤其避免跨项目共享路径 - 清理解决方案(
Build → Clean Solution),再重建
调试测试时断点不命中?确认启动的是 testhost 进程
直接按 F5 调试单个测试时,VS 实际附加的是 testhost.dll 托管进程,不是你的测试 DLL 本身。如果断点灰掉或不命中,常见原因有:
- 测试项目未启用调试符号:检查
.csproj中是否有<debugtype>portable</debugtype>(.NET Core/5+ 默认已有) - 测试方法被标记为
[Fact(Skip = "xxx")]或条件编译绕过(如#if DEBUG外围包裹) - 使用了异步但没加
async Task返回类型(例如写成async void或同步签名),vstest 会跳过执行
最稳妥的调试方式:在测试方法第一行设断点 → 右键该测试 → Debug Selected Tests,确保底部输出窗口出现 Starting test execution... 且进程名含 testhost。
测试运行看似简单,但 VS 的测试基础设施高度依赖 NuGet 包、项目 SDK、输出路径和调试符号四者的协同;任一环节错位,都会表现为“看不见”或“不动”。建议新建测试项目时优先用 VS 内置模板(如 xUnit Test Project),再逐步替换内容,比手动改造更省排查时间。










