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

VS Code使用OmniSharp时NUnit单元测试未被识别无法运行

NUnit单元测试未被OmniSharp识别、0用例执行的排查方案

核心代码问题(当前示例代码直接存在的问题)

  • 测试类、测试方法缺少public访问修饰符:NUnit测试发现器默认仅扫描公共类、公共方法标记的测试用例,当前代码里Test类、calcualteBasket方法均使用默认的internal访问级别,会被测试扫描器直接忽略。
  • (兼容性补充)旧版本NUnit要求测试类必须添加[TestFixture]特性标记,缺少该标记也会导致识别失败,高版本NUnit虽已支持自动识别带测试方法的公共类,但加上该标记可以避免跨版本兼容问题。

修正后的可识别测试代码参考:

using NUnit.Framework;

[TestFixture]
public class Test {

    [SetUp]
    public void Init() {}

    [Test]
    public void CalculateBasket() {

        Package package = new Package(7, 7, 7);
        Package package2 = new Package(20, 20, 20);

        Basket basket = new Basket();
        basket.packages.Add(package);
        basket.packages.Add(package2);

        var finalPrice = package.Price + package2.Price;
        Assert.AreEqual(12, finalPrice);

    }

}

环境配置类排查点

如果修正代码后仍无法识别,按以下顺序检查:

  • 确认测试项目已安装全部必要依赖:必须同时安装NUnit、NUnit3TestAdapter、Microsoft.NET.Test.Sdk三个NuGet包,且三个包的版本不存在兼容冲突,仅安装NUnit本体无法被测试运行器识别。
  • 检查项目生成配置:确认测试项目在当前解决方案配置下处于「生成」勾选状态,未被排除在生成流程外;同时确认项目目标框架与安装的NUnit相关包版本适配,比如高版本.NET SDK搭配过旧的NUnit3TestAdapter会出现识别异常。
  • 清理缓存重启服务:在VS Code中按下Ctrl+Shift+P(macOS为Cmd+Shift+P)调出命令面板,依次执行.NET: Clean Test Cache、OmniSharp: Restart OmniSharp,等待OmniSharp重新加载项目完成后,再重新生成项目刷新测试列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:48:18