我想只使用测试用例中的一组参数运行测试方法。
我正在使用 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:\temp\result.xml
当前 NUnit 返回错误Unexpected token '(' at position 50 in selection expression.
最佳答案
你非常接近答案。
您的查询是
--where "cat==SmokeTests and name==TestMethod(\"aaa\", \"bbb\", \"ccc\")"
查询有以下三点错误:\"
)是正确的,但由于参数的解释方式,反斜杠本身也需要转义( \\\"
)。Unexpected token '(' at position 50 in selection expression.
您还必须包装
name
引号中的参数(这些引号只需要转义一次)。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,处理转义的引号,并运行你想要的测试。引用:Test Selection Language在 NUnit documentation .
关于c# - 从控制台运行参数化测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45173324/