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.

Другие вопросы по тегам