.net 如何通过dotnet测试命令运行NUnit测试?

dsf9zpds  于 2022-11-26  发布在  .NET
关注(0)|答案(2)|浏览(174)

我尝试通过控制台运行测试,但它不工作。我认为我需要修复测试参数格式。参数值可以有几个字。您可以帮助正确的字符串运行带有参数的测试吗?
我试过改变引号和逗号,但没有用。
示例:

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"

我也曾尝试编码逗号到网址风格,但它不太工作...
示例:

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.

只有当测试有参数时才有问题。没有参数时,所有工作都正常,就像教程和官方文档中描述的那样。

nue99wik

nue99wik1#

您正在运行一个命令行程序,因此您键入的任何内容都必须经过操作系统的命令行处理,然后才能到达要处理的dotnet命令。
当然,命令行处理在每个操作系统上是不同的,你还没有说你使用的是什么操作系统。
另一个你没有展示的是MyTest方法的参数的类型。NUnit将使用它的字符串表示,这就是为什么我们需要这些信息来给予一个好的答案。所以我将继续假设参数是一个字符串。
根据以上假设,您需要键入类似以下内容...

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

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

gojuced7

gojuced72#

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

相关问题