Когда я передаю строковый массив в тестовую функцию следующим образом:
[TestCase( new string[] { "1", "2", "3" }, 1 )]
[TestCase( new string[] { "54", "508" }, 1 )]
[TestCase( new string[] { "768" }, 2 )]
public void someTest( string[] someStrings, int someNumber ) {
//...
}
Компиляция работает нормально.
Но, если я удаляю целочисленный параметр, как показано ниже, фрагмент кода показывает:
[TestCase( new string[] { "1", "2", "3" } )]
[TestCase( new string[] { "54", "508" } )]
[TestCase( new string[] { "768" } )]
public void someTest( string[] someStrings ) {
//...
}
Произошла ошибка компилятора с сообщением An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type
.
Я в основном понимаю причину ошибки, что массив не является константным типом. Но почему компилятор принимает массив, если в тестовую функцию передан другой параметр? Это даже работает, если я помещу другой массив в TestCase:
[TestCase( new string[] { "1", "2", "3" }, new int[] { 1, 2, 3 } )]
[TestCase( new string[] { "54", "508" }, new int[] { 54, 508 } )]
[TestCase( new string[] { "768" }, new int[] { 768 } )]
public void someTest( string[] someStrings, int[] someNumbers ) {
//...
}