代码之家  ›  专栏  ›  技术社区  ›  YMM

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

  •  0
  • YMM  · 技术社区  · 6 年前

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

    附笔: environmentId 是我的测试方法的参数名称,“prod”是提供的三个值之一 值来源 属性

    1 回复  |  直到 6 年前
        1
  •  1
  •   Charlie    6 年前

    关于 --params 选项它不选择测试,而是将信息传递给测试,可以使用 TestContext . 它与接受参数的测试用例的参数没有任何联系。

    这里有两种方法:(1)按照您当前的尝试,找出从命令行选择测试用例的正确方法,或者(2)实际使用 --参数 按预期方式选择。请注意,这些选项是互斥的。

    1. 选择正确的案例。

      每个测试用例都有一个名称,其中包括参数。您可以使用一个表达式来选择正确的大小写,该表达式标识您想要的大小写,并删除您不想要的大小写。例如,选项 --where "test==Your.Name.Space.YourMethod" 将选择给定方法的所有案例。要仅使用“prod”选项选择这些情况,可以使用正则表达式。。。也许是这样的 --where "test=~/Your\.Name\.Space\.YourMethod\(prod/ 假设所讨论的论点是第一个论点。显然,这不是一个容易键入的命令行,因此第二个选项可能更适合您。

    2. 使用 --参数 正确地

      基于 environmentID 参数,我猜您可能想运行 全部的 您的测试使用相同的值,而不是在测试运行过程中更改它。这就是 运行参数 通过 --参数 选项使用 --params:environmentID=prod 设置测试运行,以便任何需要正确 环境ID 环境ID 作为测试方法的C#参数,但将使用以下代码访问测试主体中的值

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

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

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