gpt4 book ai didi

c# - 从控制台运行参数化测试

转载 作者:行者123 更新时间:2023-12-04 11:42:21 25 4
gpt4 key购买 nike

我想只使用测试用例中的一组参数运行测试方法。
我正在使用 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引号中的参数(这些引号只需要转义一次)。
  • 当 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,处理转义的引号,并运行你想要的测试。
    引用: Test Selection LanguageNUnit documentation .

    关于c# - 从控制台运行参数化测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45173324/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com