NUnit TestCase - 作为属性参数的数组不符合 CLS
NUnit TestCase - Arrays as attribute argument is not CLS-compliant
我有一个带有四个参数的测试用例属性:
[TestCase("2007", "52", "saturday", "2007/12/29")]
编译器说:
Arrays as attribute arguments is not CLS-compliant.
如果我删除一个参数,它就完美了。所以,我不清楚为什么具有四个属性的测试用例不符合 CLS。我正在使用 NUnit 3.5。
这是因为,在幕后,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 来解决这个问题。
我有一个带有四个参数的测试用例属性:
[TestCase("2007", "52", "saturday", "2007/12/29")]
编译器说:
Arrays as attribute arguments is not CLS-compliant.
如果我删除一个参数,它就完美了。所以,我不清楚为什么具有四个属性的测试用例不符合 CLS。我正在使用 NUnit 3.5。
这是因为,在幕后,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 来解决这个问题。