多个[SetupTest]用于不同的配置

时间:2010-08-24 14:39:24

标签: c# nunit

是否可以在灯具中安装多个[SetupTest]?

我正在使用Selenium和nUnit,并且希望能够指定用户想要测试的浏览器。

我有一个简单的用户界面来选择要运行的测试但是,我知道将来我们希望将其连接到巡航控制以自动运行测试。理想情况下,我希望测试可以在我们的GUI和NUnit GUI上运行。

2 个答案:

答案 0 :(得分:6)

是否可以在灯具中安装多个[SetupTest]?否。

可以在基类中定义所有测试,让多个灯具继承测试,然后在运行时选择与环境相关的灯具类型。

这是我对[TestFixtureSetup]的库存示例。相同的原理适用于所有设置属性。请注意,我只是将[TestFixture]放在子类上。由于基础“TestClass”没有完整的设置代码,因此您不希望直接运行测试。

public class TestClass
{
    public virtual void TestFixtureSetUp()
    {
        // environment independent code...
    }

    [Test]
    public void Test1() { Console.WriteLine("Test1 pass.");  }

    // More Environment independent tests...
}

[TestFixture]
public class BrowserFixture : TestClass
{
    [TestFixtureSetUp]
    public override void TestFixtureSetUp()
    {
        base.TestFixtureSetUp();
        // environment dependent code...
    }
}

[TestFixture]
public class GUIFixture : TestClass
{
    [TestFixtureSetUp]
    public override void TestFixtureSetUp()
    {
        base.TestFixtureSetUp();
        // environment dependent code...
    }
}

答案 1 :(得分:0)

我怀疑你可以使用NUnit 2.5中引入的参数化测试来做你想做的事,但我不完全清楚你想在这里做什么。但是,您可以定义fixture并在其构造函数中使用Browser变量,然后使用参数化的TestFixture属性,如

TextFixture["Firefox"]
TestFixture["Chrome"]
public class ParameterizedTestFixture { 
  //Constructor
  public ParameterizedTestFixture( string Browser) {
  //set fixture variables relating to browser treatment
  }
  //rest of class
}

有关详细信息,请参阅NUnit Documentation

Setup属性标识在每次测试之前运行的方法。每个测试夹具只有一个安装程序才有意义 - 在每次测试运行之前将其视为“重置”或“准备”。