C# 如何向测试方法C提供int[,]和int值#

C# 如何向测试方法C提供int[,]和int值#,c#,.net,unit-testing,mstest,C#,.net,Unit Testing,Mstest,我需要这种单元测试方法。有矩阵和计算整数矩阵迹的方法。所以我需要提供简单的矩阵(int[,])和预期的跟踪: [DynamicData(nameof(TestDataMethod), DynamicDataSourceType.Method)] public void TestReturnTrace(int[,] simpleMatrix, int expected) { var mock = new Mock<IMatrixGenerator>(); mock.S

我需要这种单元测试方法。有矩阵和计算整数矩阵迹的方法。所以我需要提供简单的矩阵(int[,])和预期的跟踪:

[DynamicData(nameof(TestDataMethod), DynamicDataSourceType.Method)]
public void TestReturnTrace(int[,] simpleMatrix, int expected)
{
    var mock = new Mock<IMatrixGenerator>();

    mock.Setup(a => a.GenerateRandomMatrix()).Returns(simpleMatrix);

    MatrixBase matrix = new MatrixBase(mock.Object);

    int actual = matrix.ReturnTrace();

    Assert.AreEqual(expected, actual);
}
[dynamicata(nameof(TestDataMethod),DynamicDataSourceType.Method)]
public void TestReturnTrace(int[,]simpleMatrix,预期为int)
{
var mock=new mock();
Setup(a=>a.GenerateRandomMatrix()).Returns(simpleMatrix);
MatrixBase矩阵=新的MatrixBase(mock.Object);
int实际值=矩阵.ReturnTrace();
断言.AreEqual(预期、实际);
}
如何创建简单的2D数组和整数值并返回它

我最好的尝试是:

    static IEnumerable<object[], int> TestDataMethod()
    {
        int[,] array2d = new int[,] { { 1, 0 }, { 0, 1 } };
        int myInteger = 2;

        return (new[] { 
            new[] { array2d }, 
            myInteger )
        };
    }
静态IEnumerable TestDataMethod()
{
int[,]array2d=新int[,]{{1,0},{0,1};
int myInteger=2;
返回(新[]{
新[]{array2d},
我的整数)
};
}

但错误是“没有找到隐式类型数组的最佳类型”,就像我试图创建数组,但我只是在括号中配对两个值。我错在哪里?

您的返回类型与方法数据不匹配,您可以使用
(int[,],int)
作为
IEnumerable
收益返回
的通用类型参数来返回单个项目

静态IEnumerable TestDataMethod()
{
int[,]array2d={{1,0},{0,1};
int myInteger=2;
收益率回报(array2d,myInteger);
}
更新:刚刚看了一些关于MSTest和
DynamicData
属性的文章,如。正确的方法似乎是使用
IEnumerable
,其中对象数组中的每个项表示测试方法中的单个参数

静态IEnumerable TestDataMethod()
{
int[,]array2d={{1,0},{0,1};
int myInteger=2;
返回新对象[]{array2d,myInteger};
}

您的返回类型与方法数据不匹配,您可以使用
(int[,],int)
作为
IEnumerable
收益返回
的泛型类型参数来返回单个项目

静态IEnumerable TestDataMethod()
{
int[,]array2d={{1,0},{0,1};
int myInteger=2;
收益率回报(array2d,myInteger);
}
更新:刚刚看了一些关于MSTest和
DynamicData
属性的文章,如。正确的方法似乎是使用
IEnumerable
,其中对象数组中的每个项表示测试方法中的单个参数

静态IEnumerable TestDataMethod()
{
int[,]array2d={{1,0},{0,1};
int myInteger=2;
返回新对象[]{array2d,myInteger};
}

请参见
IEnumerable
仅接受一种类型parameter@PavelAnikhouski我想这只是为了说明OP想要什么:基本上是一个元组列表。他实际上问了如何返回IEnumerable,答案是:你不能因为它是非法的。你确定DynamicData需要IEnumerable吗?IMHO需要一个IEnumerable,其中object[]包含单个测试用例的所有参数,枚举循环测试用例。请参见
IEnumerable
仅接受一种类型parameter@PavelAnikhouski我想这只是为了说明OP想要什么:基本上是一个元组列表。他实际上问了如何返回IEnumerable,答案是:你不能因为它是非法的。你确定DynamicData需要一个我可数?它需要一个IEnumerable,其中object[]包含单个测试用例的所有参数,而枚举在测试用例上循环。非常感谢感谢