Yur*_*kov 5 c# unit-testing nunit-console testcase nunit-3.0
我想只使用测试用例中的一组参数运行测试方法。
我正在使用 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
}
Run Code Online (Sandbox Code Playgroud)
要运行的命令行:
nunit3-console.exe UiTests.dll --where "cat==SmokeTests and name==TestMethod(\"aaa\", \"bbb\", \"ccc\")" --result C:\temp\result.xml
Run Code Online (Sandbox Code Playgroud)
当前 NUnit 返回错误
选择表达式中位置 50 处出现意外标记“(”。
你已经非常接近答案了。
您的查询是
--where "cat==SmokeTests and name==TestMethod(\"aaa\", \"bbb\", \"ccc\")"
Run Code Online (Sandbox Code Playgroud)
该查询存在三个问题:
您认为引号需要用反斜杠 ( \") 转义是正确的,但由于参数的解释方式,反斜杠本身也需要转义 ( \\\")。
为了绕过
选择表达式中位置 50 处出现意外标记“(”。
您还必须将name参数括在引号中(这些引号只需转义一次)。
当 NUnit 构造方法名称时,它用逗号分隔参数,但不带空格。您尝试在示例中运行的测试的名称是
TestMethod("aaa","bbb","ccc")
Run Code Online (Sandbox Code Playgroud)
不是
TestMethod("aaa", "bbb", "ccc")
Run Code Online (Sandbox Code Playgroud)
那么应该有效的查询是:
--where "cat==SmokeTests and name==\"TestMethod(\\\"aaa\\\",\\\"bbb\\\",\\\"ccc\\\")\""
Run Code Online (Sandbox Code Playgroud)
传入的参数nunit3-console.exe是:
--wherecat==SmokeTests and name=="TestMethod(\"aaa\",\"bbb\",\"ccc\")"然后 NUnit 可以解析name参数,处理转义的引号,并运行您想要的测试。
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |