NUnit TestCase - 作为属性参数的数组不符合CLS

时间:2017-03-17 10:34:40

标签: c# nunit cls-compliant

我有一个带有四个参数的testcase属性:

[TestCase("2007", "52", "saturday", "2007/12/29")]

编译器说:

  

作为属性参数的数组不符合CLS。

如果我删除一个参数,它的工作完美。因此,我不清楚为什么具有四个属性的测试用例不符合CLS。我使用的是NUnit 3.5。

1 个答案:

答案 0 :(得分:3)

这是因为,NUnit的TestCaseAttribute实际上有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来解决此问题。