Microsoft Visual Studio 2017添加代码后测试消失问题求助
排查VS2017中NUnit测试消失的问题
这种测试突然从VS测试探索器里消失的情况真的挺闹心的,我之前维护NUnit测试套件的时候也踩过类似的坑,结合你的场景(VS2017 + C# + Selenium + 多浏览器扩展),给你整理几个最靠谱的排查方向:
1. 先检查NUnit核心属性是否配置正确
多浏览器测试依赖NUnit的参数化特性,如果新增的测试代码漏了关键属性,测试探索器直接会忽略它们:
- 确认测试类带了
[TestFixture](尤其是带浏览器参数的版本),测试方法必须标记[Test]; - 举个标准的多浏览器测试结构示例,你可以对照自己的代码检查:
// 定义浏览器枚举 public enum BrowserType { Chrome, Firefox } [TestFixture(BrowserType.Chrome)] [TestFixture(BrowserType.Firefox)] public class OrderTests { private IWebDriver _driver; private readonly BrowserType _browser; // 必须有对应参数的构造函数,接收TestFixture的参数 public OrderTests(BrowserType browser) { _browser = browser; } [SetUp] public void SetupDriver() { // 初始化对应浏览器的Driver _driver = _browser switch { BrowserType.Chrome => new ChromeDriver(), BrowserType.Firefox => new FirefoxDriver(), _ => throw new ArgumentOutOfRangeException() }; } [Test] // 这个属性绝对不能少 public void SubmitOrder_Success() { // 测试逻辑 } } - 另外检查测试类和方法的访问修饰符,必须是
public,internal或private的测试不会被识别。
2. 排查NuGet包与项目配置的一致性
如果新增测试时改动了依赖包或项目框架,也可能导致测试发现失败:
- 对比原有正常测试的项目,确保当前项目的NUnit、NUnit3TestAdapter、Selenium.WebDriver版本完全一致(VS2017对NUnit3的适配建议用3.10+的TestAdapter版本);
- 确认项目目标框架和原有项目一致(比如都是.NET Framework 4.6.1),不同框架的测试可能不会被统一识别。
3. 清理编译与缓存问题
VS测试探索器有时候会缓存旧数据,或者隐性编译错误导致测试无法加载:
- 先清理解决方案:点击菜单栏「生成」→「清理解决方案」,删除项目下的
bin和obj文件夹,再重新生成; - 刷新测试探索器:点击顶部的「刷新」按钮,或者右键选择「全部运行」,强制触发测试重新探索。
4. 检查测试探索器的过滤设置
有时候是自己不小心触发了过滤规则,导致测试被隐藏:
- 点击测试探索器顶部的「设置」图标,确认勾选了「包括所有测试」,没有按命名空间、测试类别等条件过滤掉新增测试。
如果以上步骤都试过还是没解决,建议把新增测试的代码片段贴出来,这样能更精准地定位问题。
内容的提问来源于stack exchange,提问作者PLQA
相关产品推荐
相关产品推荐

