4

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[][]array[][][]

4

1 に答える 1

5

可能です。ただし、 andの代わりに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)
{
    ...
}

ここでのもう 1 つの利点は、テスト ケースがより適切に整理され、複数のテストで簡単に再利用できることです。

于 2013-04-23T18:53:27.590 に答える