NUnit TestCase - Массивы в качестве аргумента атрибута не совместимы с CLS
У меня есть атрибут testcase с четырьмя аргументами:
[TestCase("2007", "52", "saturday", "2007/12/29")]
Компилятор говорит:
Массивы в качестве аргументов атрибутов не соответствуют CLS.
Если я уберу один аргумент, он отлично работает. Поэтому мне не ясно, почему тестовые наборы с четырьмя атрибутами не соответствуют CLS. Я использую NUnit 3.5.
1 ответ
Это связано с тем, что под капотом у TestCaseAttribute в NUnit есть 4 разных конструктора.
public TestCaseAttribute(object arg)
{
}
public TestCaseAttribute(object arg1, object arg2)
{
}
public TestCaseAttribute(object arg1, object arg2, object arg3)
{
}
//Not CLS compliant
public TestCaseAttribute(params object[] arguments)
{
}
Как вы можете видеть - для 1-3 параметров существуют конкретные конструкторы, тогда как для>3 по умолчанию используется не-CLS-совместимая версия, которая использует object[]
вместо. И, как говорит компилятор, массивы в качестве аргументов атрибутов не соответствуют CLS.
Если вам нужно быть CLS-совместимым, вы можете обойти это, используя взамен TestCaseSourceAttribute.