如何在NUnit测试源码中配置让指定类默认不被dotnet test执行
可以实现,最简便的方案是直接在测试类源码中使用NUnit原生的[Explicit]特性,不需要修改任何命令行参数或全局配置。
方案1:使用[Explicit]特性(最贴合需求)
该特性的作用是标记测试/测试类仅在被显式选中时执行,不会被全量测试运行自动捕获,完全匹配你的要求:
- 直接在
IntegrationTests.cs中给测试类添加特性即可,示例代码:
using NUnit.Framework; [TestFixture] // 特性参数为可选的说明文本,标注不默认执行的原因 [Explicit("集成测试默认不随全量任务运行,需手动触发")] public class IntegrationTests { [Test] public void 集成测试示例() { // 测试逻辑 } }
- 实际运行效果:
- 执行无参数的
dotnet test命令时,该类下所有测试会被自动跳过,仅运行UnitTests.cs中的单元测试 - IDE中点击全局「运行所有测试」按钮时,这些集成测试同样不会执行
- 在IDE中手动选中该测试类、或类下任意单个测试方法点击运行/调试时,集成测试可以正常执行
- 执行无参数的
方案2:测试分类+本地运行配置(适合多分类灵活管理场景)
如果你后续需要扩展更多测试分类(如数据库测试、性能测试等),需要更灵活的过滤规则,可以用分类标记+本地默认运行配置实现:
- 第一步:给集成测试类添加分类标记:
[TestFixture] [Category("Integration")] public class IntegrationTests { // 测试逻辑 }
- 第二步:在Tests项目根目录新建
.runsettings文件,配置默认过滤规则:
<?xml version="1.0" encoding="utf-8"?> <RunSettings> <RunConfiguration> <!-- 默认排除所有Integration分类的测试 --> <TestCaseFilter>TestCategory!=Integration</TestCaseFilter> </RunConfiguration> </RunSettings>
- 第三步:将该配置文件设为项目本地默认加载的测试配置后,执行
dotnet test会自动应用过滤规则,不需要额外加命令参数。需要运行集成测试时,手动选中对应测试执行即可。
如果仅需要实现当前需求,优先选择方案1,仅需修改IntegrationTests.cs的源码,不需要额外新增配置文件,改动成本最低。
内容的提问来源于stack exchange,提问作者user4779
相关产品推荐
相关产品推荐

