0

有谁知道是否可以使用 nunit3 控制台执行具有不同 TestFixture 参数的测试?我有以下代码:

  [TestFixture(Browser.Firefox)] 
  [TestFixture(Browser.Chrome)]
  public class Tests : BaseTestCase

我只想使用 Browser.Chrome 设置执行测试。是否可以从具有 TestFixture 参数 = Browser.Chrome 的某个 dll 运行所有测试?

提前感谢您提供的信息!

4

2 回答 2

0

感谢您的帮助!我已经尝试过您建议的方式,但没有任何成功。当我设置测试类的属性时,我无法获得“浏览器”值运行时。“浏览器”包含设置为测试的所有属性,而不是当前运行测试的属性。

作为我的问题的解决方法,我找到了以下解决方案:我有一个方法用于从程序集中查找所有测试类,其中 TestFixture“浏览器”设置为“Chrome”。找到类名后,将它们添加到一个txt文件中,最后文件如下所示:

TestClass1(Chrome)
TestClass2(Chrome)
TestClass3(Chrome)

当我有这样的文件时,我可以使用以下命令运行测试: nunit3-console "TestsDllPath" --testlist="TextFilePath"

这种方法的最大缺点是每次添加测试类时都应该运行创建测试列表文件的方法。

于 2016-07-04T11:49:57.763 回答
0

你的问题分为两部分:

  1. 可以完全按照您描述的方式创建夹具。你试过了吗?枚举的值将被传递给夹具构造函数,当然必须写入这样的枚举。我还没有尝试过,因此可能需要将其设置为 int,但这是一个简单的更改。

  2. 如果您首先弄清楚 NUnit 为该夹具所代表的测试提供的名称,那么选择只运行一个夹具应该很容易。它可能类似于“Tests(Chrome)”,但您应该使用 --explore 检查或运行测试并查看 XML 输出。一旦您知道名称,只需使用 --where 选项运行它。运行所有带有这样一个选项的测试将是使用 --where 和一个正则表达式来获取这些测试的问题。

    如果 --where "test=~/(Chrome)/" 不是一个足够好的选择器,那么我会将枚举替换为您自己定义的一些 const 字符串,例如 "BrowserIsChrome" 您可以将它们转换为构造函数中的枚举。只需使字符串足够独特,以便您可以在 --where 选项中对其进行测试。

于 2016-07-04T12:05:05.817 回答