C# 如何向测试方法C提供int[,]和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
[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[]包含单个测试用例的所有参数,而枚举在测试用例上循环。非常感谢感谢