我想只用测试用例中的一组参数运行测试方法。
我正在使用 NUnit 控制台 3.4.1。
代码示例:
[Category("SmokeTests")]
[TestCase("1 param", "2 param", "3 param")]
[TestCase("aaa", "bbb", "ccc")]
public void TestMethod(string a, string b, string c)
{
// do something
}
要运行的命令行:
nunit3-console.exe UiTests.dll --where "cat==SmokeTests and name==TestMethod("aaa", "bbb", "ccc")" --result C:tempresult.xml
当前 NUnit 返回错误
选择表达式中位置 50 处的意外标记"("。
你非常接近答案。
您的查询是
--where "cat==SmokeTests and name==TestMethod("aaa", "bbb", "ccc")"
查询有三点错误:
你认为引号需要用反斜杠(
"
(转义是正确的,但由于参数的解释方式,反斜杠本身也需要转义(\"
(。为了绕过
选择表达式中位置 50 处的意外标记"("。
您还必须将
name
参数括在引号中(这些引号只需要转义一次(。当 NUnit 为方法构造其名称时,它会以逗号分隔参数,但没有空格。您尝试在示例中运行的测试的名称是
TestMethod("aaa","bbb","ccc")
不
TestMethod("aaa", "bbb", "ccc")
那么,应该有效的查询是:
--where "cat==SmokeTests and name=="TestMethod(\"aaa\",\"bbb\",\"ccc\")""
传递给nunit3-console.exe
的参数是:
--where
cat==SmokeTests and name=="TestMethod("aaa","bbb","ccc")"
然后 NUnit 可以解析name
arugment,处理转义的引号,并运行您想要的测试。
参考:NUnit 文档中的测试选择语言。