如何在两个不同的设置下运行一组nUnit测试?

8

抱歉标题不够清晰,如果您能想到更好的标题,请编辑它

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

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

还是有更好的方法吗?

请参见“使用linq-to-sql和linq-to-objects进行大小写不敏感的字符串比较”了解我正在测试的内容。


您可以在测试夹具属性中使用参数,例如 [TestFixture(2)] [TestFixture(1)]。请参阅 https://dev59.com/J5Hea4cB1Zd3GeqPrp9g#35015148。 - Vas
1个回答

17

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

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

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

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

    // other test-cases
}

然后你为每个设置创建两个子类。因此,每个子类将单独运行具有它的安装设置方法以及所有继承的测试方法。

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

这个工作得很好。然而,对于更简单的测试参数化测试是一个更好的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接