【问题标题】:How to run NUnit test with parameters via dotnet test command?如何通过 dotnet test 命令运行带参数的 NUnit 测试?
【发布时间】:2022-11-21 07:48:15
【问题描述】:

我尝试通过控制台运行测试,但它不起作用。我认为我需要修复测试参数格式。参数值可以有几个字。 你能帮助正确的字符串来运行带参数的测试吗?

我试图更改引号和逗号,但没有帮助。

例子:

dotnet test myProject --filter "Name=MyTest('My parameter value',null)"

错误:

MSBUILD : error MSB1006: Property is not valid.
Switch: null)

For switch syntax, type "MSBuild -help"

我也尝试将逗号编码为 URL 样式,但它也不起作用......

例子:

dotnet test myProject --filter Name=MyTest('My parameter value'%2Cnull)"

错误:

An exception occurred while invoking executor 'executor://nunit3testexecutor/': Incorrect format for TestCaseFilter Missing Operator '|' or '&'. Specify the correct format and try again. Note that the incorrect format can lead to no test getting executed.

附言只有当测试有参数时才会出现问题。没有参数,一切正常,如教程和官方文档中所述。

【问题讨论】:

    标签: .net nunit


    【解决方案1】:

    您正在运行命令行程序,因此无论您键入什么,都必须先通过操作系统的命令行处理,然后才能到达 dotnet 命令进行处理。

    当然,每个操作系统的命令行处理都不同,您还没有说您使用的是什么操作系统。我将假设使用 Windows 来回答这个问题。

    您没有显示的另一件事是 MyTest 方法的参数类型。 NUnit 将使用它的字符串表示,这就是为什么我们需要该信息来给出一个好的答案。所以我将继续并假设参数是一个字符串。

    鉴于上述假设,您需要输入类似这样的内容......

    dotnet test myProject --filter "Name=MyTest("My parameter value")"
    

    我没有包括第二个参数,它是 null,因为我什至没有足够的信息来猜测。 :-)

    【讨论】:

    • @查理嗨!谢谢你的答案!我用窗户。我试过你的答案,但我得到了同样的结果。我也尝试使用 ' 作为外括号和 " 作为内括号,但我有同样的问题......
    • 我们可能需要查看您尝试运行的测试的标题以便更好地理解。 WRT 报价...没有选择。使用双引号并使用反斜杠转义任何内部双引号。这不是 XML!
    • 建议...要查看如何解释带有特殊字符的命令行参数,只需编写一个单行脚本以将参数回显到控制台。
    【解决方案2】:

    我已经为自己找到了解决方案。因为找出如何在控制台中使用引号非常复杂(对于 NUnit 来说这可能是不可能的),所以我决定使用类别作为测试的 ID。在这种情况下,每个测试都有一个唯一的 ID,我可以通过“类别”过滤器在控制台上轻松运行它们。

    【讨论】:

      猜你喜欢
      • 2020-11-05
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      相关资源
      最近更新 更多