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

Selecting tests by parameter in NUnit 3 console

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

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

关于 --params 选项的问题隐含了一些误解。它不 select 测试但将信息传递给测试,可以使用 TestContext 访问这些信息。而且和带参数的测试用例的参数完全没有关系

您有两种方法可以到达此处:(1) 找出正确的方法来 select 从命令行测试用例,就像您当前正在尝试做的那样,或者 (2) 实际使用 --params 选项以预期的方式。请注意,这些是互斥的选项。

  1. 选择正确的案例。

    每个测试用例都有一个名称,其中包括参数。您可以 select 正确的案例使用一个表达式来识别你想要的,并消除你不想要的。例如,选项 --where "test==Your.Name.Space.YourMethod" 将 select 给定方法的所有情况。对于 select 那些只有 "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 提供第二个参数,指定在未传递参数时要使用的环境。

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