我使用ValueSource
属性参数化了测试。源提供3个参数(这些是运行测试的环境),我可以在Visual Studio的测试资源管理器中查看和选择它们。
但是在使用NUnit控制台运行器时如何选择特定参数?我尝试了--params environmentId:prod
,但它不起作用(执行所有三种环境的测试)。
P.S:environmentId
是我的测试方法的参数名称和" prod"是ValueSource
属性提供的三个值之一。
答案 0 :(得分:1)
关于--params
选项的问题隐含着一些误解。它不会选择测试,但会将信息传递给测试,可以使用TestContext
访问测试。并且它与参数的测试用例的参数完全没有联系。
您可以通过以下两种方式:(1)找出从您当前尝试的命令行中选择测试用例的正确方法,或者(2)实际使用--params
选项预期的方式。请注意,这些是互斥的选项。
选择正确的案例。
每个测试用例都有一个名称,其中包含参数。您可以使用一个表达式来选择正确的案例,该表达式可以识别您想要的案例,并消除您不想要的案例。例如,选项--where "test==Your.Name.Space.YourMethod"
将选择给定方法的所有案例。仅使用" prod"选择那些案例选项,您可以使用正则表达式...也许类似于--where "test=~/Your\.Name\.Space\.YourMethod\(prod/
,假设有问题的参数是第一个。显然,这不是一个简单的键入命令行,所以第二个选项可能看起来更好。
正确使用--params
根据environmentID
参数的名称,我猜测您可能希望使用相同的值运行所有您的测试,而不是在测试过程中更改它测试运行。这是运行参数的目的,是--params
选项传递给您的应用程序的目的。使用--params:environmentID=prod
设置测试运行,以便任何需要正确environmentID
的测试都可以轻松访问它。您不再使用environmentID
作为测试方法的C#参数,而是使用类似
string environmentID = TestContext.Parameters.Get("environmentID");
您还可以为Get
提供第二个参数,指定在没有参数传递时使用的环境。
希望这两种方法中的一种对您有用!