NUnit顺序属性,其值包含值

时间:2013-04-23 13:59:07

标签: c# arrays nunit sequential

如何将string[][]数组传递给ValuesAttribute?

我有:

public string[][] Array1 = new[] {new[] {"test1", "test2"}};
//...
[Test, Sequential]
public void SomeTest(
    [Values("val1", "val2", "val3")] string param1, 
    [Values(Array1, Array2, Array3)] string[][] param2) { //... }

我有Cannot access non-static field "Array1" in static context。我使用Array1关键字标记static,而不是An attribute argument must be a constant expression...,而不是readonly关键字,我仍然An attribute argument must be a constant expression...

这里有什么办法可以传递多个数组吗? (丑陋的string[][][]除以及param2中相关array[][]的{​​{1}}索引

1 个答案:

答案 0 :(得分:5)

有可能。但您需要使用TestCaseSourceAttribute代替SequentialValues

查看示例:

object[][] testCases = new[] {

    // test case 1
    new object[] {
        "val1",
        new[] { "test11", "test12" }
    },

    // test case 2
    new object[] {
        "val2",
        new[] { "test21", "test22" }
    },

    // test case 3
    new object[] {
        "val3",
        new[] { "test31", "test32", "test33", "test34" }
    }
};

[Test]
[TestCaseSource("testCases")]
public void SomeTest(string param1, string[] param2)
{
    ...
}

此处的另一个好处是:测试用例组织得更好,可以在多个测试中轻松重用。