Последовательный атрибут NUnit с массивами в значениях
Как я могу пройти 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[][][]
)
1 ответ
Решение
Это возможно. Но вам нужно использовать TestCaseSourceAttribute вместо Sequential
а также Values
,
Смотрите пример:
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)
{
...
}
Еще одно преимущество: тестовые случаи лучше организованы, и их можно легко использовать в нескольких тестах.