如何使用两种不同的设置运行一组nUnit测试?

时间:2010-03-05 17:01:56

标签: unit-testing nunit

(抱歉标题不清楚,如果你能想出更好的标题,请编辑它)

我希望在两个不同的数据存储上运行相同的测试,我可以在Setup()方法中创建数据存储。

那么我应该有一个包含所有测试和抽象SetUp()方法的超类,那么每个数据存储都有一个子类?

或者有更好的方法吗?

有关我正在测试的内容,请参阅“Case insensitive string compare with linq-to-sql and linq-to-objects”。

1 个答案:

答案 0 :(得分:11)

这是一个简单的解决方案。

所有测试用例都在一个抽象类中,例如在TestBase类中。例如:

public abstract class TestBase
{
    protected string SetupMethodWas = "";

    [Test]
    public void ExampleTest()
    {
        Console.Out.WriteLine(SetupMethodWas);    
    }

    // other test-cases
}

然后为每个设置创建两个子类。因此,每个子类都将使用it-setup方法和所有继承的测试方法运行。

[TestFixture]
class TestA : TestBase
{
    [SetUp]
    public void Setup()
    {
        SetupMethodWas = "SetupOf-A";    
    }
}
[TestFixture]
class TestB : TestBase
{
    [SetUp]
    public void Setup()
    {
        SetupMethodWas = "TestB";
    }
}

这很棒。但是,对于更简单的测试,parameterized tests是更好的解决方案