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

Visual Studio 2017测试运行器可发现测试但无法执行该如何解决?

排查方向与解决办法

这种情况我之前也碰到过好几次,大概率是VS默认测试运行器的配置、项目缓存或者依赖出了问题,给你列几个实用的排查步骤:

1. 确认测试项目的目标框架与VS组件兼容性

VS自带的VSTest运行器对目标框架的支持有严格要求,比如你的测试项目用了.NET 6+,但VS的对应.NET开发组件没更新,就会出现「能发现测试但跑不起来」的情况:

  • 右键测试项目 → 属性,确认目标框架版本;
  • 打开「工具→获取工具和功能」,检查对应版本的.NET开发组件是否安装完整。

2. 清理项目缓存与重建

项目的二进制文件或测试缓存损坏是常见诱因,Resharper有独立的缓存机制所以不受影响:

  • 执行Clean Solution,再执行Rebuild Solution;
  • 手动删除测试项目下的bin和obj文件夹,重新编译;
  • 清空VS测试会话缓存:点击「测试→测试设置→清空测试会话」。

3. 检查测试类/方法的访问修饰符

默认测试框架对访问权限要求很严格,Resharper则会放宽限制:

  • 确保测试类是public class,测试方法是public void(异步测试要改成public async Task);
  • 确认测试方法上的特性(比如[Test]/[Fact])引用了正确的命名空间(比如Microsoft.VisualStudio.TestTools.UnitTesting)。

4. 校验测试项目的NuGet依赖

如果缺失或版本不匹配核心测试包,VSTest会静默跳过执行:

  • 检查测试项目的NuGet包,确保Microsoft.NET.Test.Sdk、MSTest.TestAdapter、MSTest.TestFramework(或你用的xUnit/NUnit对应包)都已正确安装,且版本一致;
  • 若引用了其他项目,确认被引用项目是类库类型,且已正常编译。

5. 调整测试运行器的基础设置

有时候架构不匹配或并行执行会导致冲突:

  • 打开「测试→测试设置→默认处理器架构」,确认选择的架构(x86/x64)和测试项目的目标平台一致;
  • 到「工具→选项→测试→通用」,暂时关闭「启用测试发现和执行的并行化」试试。

6. 排查异步测试的写法问题

VSTest对异步void方法的支持极差,会直接跳过执行:

  • 把public void MyAsyncTest()改成public async Task MyAsyncTest(),确保异步测试正确返回Task类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:41:20