我想用testcase中的一组参数运行测试方法。
nunit console version 3.4.1
代码示例:
[TestCategory("SmokeTests")]
[TestCase("1 param", "2 param", "3 param")]
[TestCase("aaa", "bbb", "ccc")]
public void TestMethod(string a, string b)
{ //do smth }
要运行的命令行:
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.
请澄清,如果有可能在当前版本的nunit或其他任何内容中发布。
答案 0 :(得分:1)
你已经非常接近答案了。
您的查询是
--where "cat==SmokeTests and name==TestMethod(\"aaa\", \"bbb\", \"ccc\")"
查询有三处错误:
您认为引号需要用反斜杠转义是正确的(\"
),但由于参数的解释方式,反斜杠本身也需要转义({{1 }}).
绕过
<块引用>选择表达式中第 50 位出现意外标记“(”。
您还必须将 \\\"
参数用引号括起来(这些引号只需转义一次)。
当 NUnit 为一个方法构造它的名称时,它用逗号分隔参数,但没有空格。您尝试在示例中运行的测试名称是
name
不是
TestMethod("aaa","bbb","ccc")
那么应该起作用的查询是:
TestMethod("aaa", "bbb", "ccc")
传入 --where "cat==SmokeTests and name==\"TestMethod(\\\"aaa\\\",\\\"bbb\\\",\\\"ccc\\\")\""
的参数是:
nunit3-console.exe
--where
然后 NUnit 可以解析 cat==SmokeTests and name=="TestMethod(\"aaa\",\"bbb\",\"ccc\")"
参数,处理转义引号,并运行您想要的测试。