【问题标题】:How to set 2d array as parameter for unit testing如何将二维数组设置为单元测试的参数
【发布时间】:2020-01-19 01:57:41
【问题描述】:

如果期望的变量是整数,它就是这样的

[DataRow(2)]
[TestMethod]
public void TestMethod(int expected)
{
      // some code...
}

但是当有 2d 数组 int[,] 而不是 int 参数时该怎么办? 当我尝试这样做时

[DataRow(new int[,] { {0, 0}, {0, 0} })]
[TestMethod]
public void TestMethod(int[,] expected)
{
      // some code...
}

错误提示

属性参数必须是属性参数类型的常量表达式、typeof表达式或数组创建表达式

【问题讨论】:

  • 那么当你运行第二个代码时发生了什么?

标签: c# unit-testing mstest data-driven-tests parameterized-unit-test


【解决方案1】:

您可以使用DynamicData Attribute 来实现它,如下所示:

[DataTestMethod]
[DynamicData(nameof(TestDataMethod), DynamicDataSourceType.Method)]
public void TestMethod1(int[,] expected)
{
    // some code...
    var b = expected;
}

static IEnumerable<object[]> TestDataMethod()
{
    return new[] { new[] { new int[,] { { 0, 0 }, { 1, 1 } } } };
}

输出

【讨论】:

  • 我刚刚用预期的结果图像更新了我的答案,请看看@Andrey
  • 完美!谢谢:)
猜你喜欢
  • 1970-01-01
  • 2011-11-26
  • 2013-12-04
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-09
  • 2021-08-08
  • 2012-04-29
相关资源
最近更新 更多