Как установить 2d массив в качестве параметра для модульного тестирования - PullRequest
2 голосов
/ 19 января 2020

Если ожидаемая переменная является целым числом, она просто выглядит следующим образом:

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

Но что делать, если вместо параметра int есть 2d массив int [,]? Когда я пытаюсь сделать это

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

ошибка говорит

Аргумент атрибута должен быть выражением константы, выражением typeof или выражением создания массива типа параметра атрибута

1 Ответ

3 голосов
/ 19 января 2020

Вы можете достичь этого, используя Атрибут DynamicData

[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 } } } };
}

Выход

enter image description here

...