C# NUnit值中带有数组的顺序属性

C# NUnit值中带有数组的顺序属性,c#,arrays,nunit,sequential,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[][] par

如何将
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) { //... }
在静态上下文中,
无法访问非静态字段“Array1”。然后我用
static
关键字标记
Array1
,然后我得到
一个属性参数必须是一个常量表达式…
然后我用
readonly
关键字标记它,我仍然得到
一个属性参数必须是一个常量表达式…


这里有传递多个数组的方法吗?(除了丑陋的
string[][][]
和在
array[][][]]
中传递相关
array[][][]
param2
索引之外)

这是可能的。但是您需要使用而不是
顺序

请参见一个示例:

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)
{
    ...
}

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

谢谢,这对我来说很有用,但是这里有没有办法将字符串[][]数组传递给ValuesAttribute?不要认为这是可能的,因为属性只接受常量参数。但是
数组
不能声明为常量。例如,见本问题