在NUnit 3控制台中按参数选择测试

时间:2018-01-20 22:08:19

标签: c# nunit nunit-3.0 nunit-console

我使用ValueSource属性参数化了测试。源提供3个参数(这些是运行测试的环境),我可以在Visual Studio的测试资源管理器中查看和选择它们。 但是在使用NUnit控制台运行器时如何选择特定参数?我尝试了--params environmentId:prod,但它不起作用(执行所有三种环境的测试)。

P.S:environmentId是我的测试方法的参数名称和" prod"是ValueSource属性提供的三个值之一。

1 个答案:

答案 0 :(得分:1)

关于--params选项的问题隐含着一些误解。它不会选择测试,但会将信息传递给测试,可以使用TestContext访问测试。并且它与参数的测试用例的参数完全没有联系。

您可以通过以下两种方式:(1)找出从您当前尝试的命令行中选择测试用例的正确方法,或者(2)实际使用--params选项预期的方式。请注意,这些是互斥的选项。

  1. 选择正确的案例。

    每个测试用例都有一个名称,其中包含参数。您可以使用一个表达式来选择正确的案例,该表达式可以识别您想要的案例,并消除您不想要的案例。例如,选项--where "test==Your.Name.Space.YourMethod"将选择给定方法的所有案例。仅使用" prod"选择那些案例选项,您可以使用正则表达式...也许类似于--where "test=~/Your\.Name\.Space\.YourMethod\(prod/,假设有问题的参数是第一个。显然,这不是一个简单的键入命令行,所以第二个选项可能看起来更好。

  2. 正确使用--params

    根据environmentID参数的名称,我猜测您可能希望使用相同的值运行所有您的测试,而不是在测试过程中更改它测试运行。这是运行参数的目的,是--params选项传递给您的应用程序的目的。使用--params:environmentID=prod设置测试运行,以便任何需要正确environmentID的测试都可以轻松访问它。您不再使用environmentID作为测试方法的C#参数,而是使用类似

    的代码访问测试正文中的值

    string environmentID = TestContext.Parameters.Get("environmentID");

    您还可以为Get提供第二个参数,指定在没有参数传递时使用的环境。

  3. 希望这两种方法中的一种对您有用!