1

我有一个带有四个参数的测试用例属性:

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

编译器说:

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

如果我删除一个论点,它的作品就完美了。因此,我不清楚为什么具有四个属性的测试用例不符合 CLS。我正在使用 NUnit 3.5。

4

1 回答 1

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 兼容版本,它使用 anobject[]代替。正如编译器所说,作为属性参数的数组不符合 CLS。

如果您需要符合 CLS,则可以改用TestCaseSourceAttribute来解决此问题。

于 2017-03-17T10:45:24.733 回答