如何使用nunit-console筛选并运行未设置Category属性的NUnit测试用例
NUnit控制台筛选无Category测试的解决方案
要直接匹配所有未设置任何Category的测试,优先使用hascat函数的取反写法,兼容性更强,无需提前枚举所有已有Category:
nunit3-console.exe MyAssembly.dll --where "!hascat('*')"
原理解释
hascat('*')是NUnit测试选择语法的内置函数,表示匹配所有设置了任意Category的测试用例- 开头加
!取反后,就会仅匹配完全没有设置过Category属性的测试,正好符合你的需求
之前写法失效的原因
你尝试的cat == null写法本身是语法正确的,匹配不到主要是两个问题:
- 命令漏掉了
where参数前的--前缀,NUnit3控制台要求所有命名参数都需要加--前缀 - 命令行终端的转义冲突:
- Windows cmd环境执行,需把where的表达式用双引号完整包裹,完整写法为:
nunit3-console.exe MyAssembly.dll --where "cat == null" - PowerShell环境执行,双引号会被PowerShell提前解析,需要改用单引号包裹表达式:
nunit3-console.exe MyAssembly.dll --where 'cat == null'
- Windows cmd环境执行,需把where的表达式用双引号完整包裹,完整写法为:
以上两种写法都可以实现需求,优先推荐!hascat('*')的写法,适配所有终端和NUnit3的所有版本。
内容的提问来源于stack exchange,提问作者MakePeaceGreatAgain
相关产品推荐
相关产品推荐

