【发布时间】:2015-04-18 18:51:36
【问题描述】:
我正在使用 NUnit 并尝试为以下方法实现测试: 它应该接受两个整数并返回二维数组。 所以,我的测试标题看起来像:
[TestCase(5, 1, new int[,]{{1}, {2}, {3}, {4}, {5}})]
public void MyTestMethod(int a, int b, int[][] r)
在编译过程中出现以下错误:
错误 CS0182:属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式 (CS0182)
我知道可以使用TestCaseSource 来引用对象数组,例如以下问题的答案:
给出如下代码:
private object[][] combination_tests = new [] {
new object[] {5, 1, new [,]{{1}, {2}, {3}, {4}, {5}}},
};
[Test]
[TestCaseSource("combination_tests")]
public void MyTestMethod(int a, int b, int[,] r)
但我仍然有一个问题:是否可以仅使用 TestCase 属性来做到这一点?
【问题讨论】:
-
(现有答案的总结)这是 .NET 属性系统的限制,因此它不是 NUnit 缺陷。因此,要解决此限制,必须 (1) 将数据重新格式化为 .NET 属性系统允许的数据类型,或 (2) 存储在类字段、属性或可以创建和返回NUnit 加载单元测试项目时的数据。其他 .NET 单元测试框架也会有同样的问题。
标签: c# arrays nunit testcaseattribute