【问题标题】:NUnit TestCase - Arrays as attribute argument is not CLS-compliantNUnit TestCase - 数组作为属性参数不符合 CLS
【发布时间】:2017-03-17 10:34:39
【问题描述】:

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

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

编译器说:

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

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

【问题讨论】:

    标签: c# nunit cls-compliant


    【解决方案1】:

    这是因为,在底层,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 来解决此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 2011-12-05
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      相关资源
      最近更新 更多