У меня есть следующий тест:
[ExpectedException(typeof(ParametersParseException))]
[TestCase("param1")]
[TestCase("param1", "param2")]
[TestCase("param1", "param2", "param3", "optParam4", "optParam5", "some extra parameter")]
public void Parse_InvalidParametersNumber_ThrowsException(params string[] args)
{
new ParametersParser(args).Parse();
}
Первый TestCase (очевидно) терпит неудачу со следующей ошибкой:
System.ArgumentException : Object of type 'System.String'
cannot be converted to type 'System.String[]'.
Я попытался заменить определение TestCase этим:
[TestCase(new[] { param1 })]
но теперь я получаю следующую ошибку компиляции:
ошибка CS0182: аргумент атрибута должен быть выражением константы, выражением typeof или выражением создания массива типа параметра атрибута
Мое решение на данный момент - перенести случай «одного параметра» в другой метод тестирования.
Тем не менее, есть ли способ заставить этот тест работать так же, какдругие?