针对不同条件重复一组测试?

时间:2016-02-09 13:27:51

标签: c# unit-testing nunit

我想重复一组单元测试,具有相同的设置夹具(SetUpFixture),适用于不同的条件。

即。测试集使用相同的文件作为输入。该文件正在设置夹具中设置。我想重复使用不同输入文件的设置夹具的测试。

TextFixture可能,SetupFixture则不行。Regex.Replace(before, @"(jquery\d*=[\"']\d*[\"'])", ""); 。有解决方法吗?

2 个答案:

答案 0 :(得分:1)

您可以做的是生成一些输入文件,并使用文件名作为测试参数:

[TestFixture]
public class MyClass
{
    [TestFixtureSetUp]
    //[OneTimeSetUp] for NUnit 3
    public void FixtureSetUp()
    {
        PrepareFile("a.txt");
        PrepareFile("b.txt");
        PrepareFile("c.txt");
    }

    [TestCase("a.txt")]
    [TestCase("b.txt")]
    [TestCase("c.txt")]
    public void Test(string fileName)
    {
        var result = YourTestCode(fileName);
        Assert.True(result); //whatever you need
    }
}

答案 1 :(得分:1)

您可以使用TestFixtureAttribute为每个数据文件构建测试类。移植安东的答案;

[TestFixture("a.txt")]
[TestFixture("b.txt")]
[TestFixture("c.txt")]
public class MyClass
{
    string _filename;

    public MyClass(string filename)
    {
        _filename = filename;
    }

    [TestFixtureSetUp]
    //[OneTimeSetUp] for NUnit 3
    public void FixtureSetUp()
    {
        PrepareFile(_filename);
    }

    [Test()]
    public void Test()
    {
        var result = YourTestCode();
        Assert.True(result); //whatever you need
    }
}

如果您想以更动态的方式提供TestFixture的数据,请查看TestFixtureSourceAttribute