c# - 如何为测试方法提供 int[,] 和 int 值,C#
问题描述
我需要这种方法进行单元测试。有矩阵和计算矩阵迹的方法,它是整数。所以我需要提供简单的矩阵 (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);
}
如何创建简单的二维数组和整数值并返回它?
我最好的尝试是:
static IEnumerable<object[], int> TestDataMethod()
{
int[,] array2d = new int[,] { { 1, 0 }, { 0, 1 } };
int myInteger = 2;
return (new[] {
new[] { array2d },
myInteger )
};
}
但错误是“没有找到隐式类型数组的最佳类型”,就像我尝试创建数组一样,但我只是在括号中配对两个值。我哪里错了?
解决方案
您的返回类型与方法数据不匹配,您可以将其用作泛型类型参数并返回单个项目。tuple
(int[,], int)
IEnumerable<T>
yield return
static IEnumerable<(int[,], int)> TestDataMethod()
{
int[,] array2d = { { 1, 0 }, { 0, 1 } };
int myInteger = 2;
yield return (array2d, myInteger);
}
更新:刚刚看了一些关于 MSTest 和DynamicData
属性的文章,就像这样。正确的方法似乎是使用IEnumerable<object[]>
,其中对象数组中的每个项目都代表测试方法中的单个参数
static IEnumerable<object[]> TestDataMethod()
{
int[,] array2d = { { 1, 0 }, { 0, 1 } };
int myInteger = 2;
yield return new object[] { array2d, myInteger };
}
推荐阅读
- mongodb - Mongodb 收集给定集合的所有集合信息
- c# - ZXing.Net.Mobile 应用崩溃
- java - 有没有办法将 mutator 方法作为参数传递给另一个方法?
- c# - c#同时向同一页面发送多个请求(例如:登录)
- azure - 无法使用 Azure Active Diectory Bearer 令牌对 Azure Functions 进行身份验证
- wordpress - Wordpress ModRewrite 不起作用?
- sdk - Websphere 8.5.5.13 中的 SDK 版本和安装
- python - Pyqtgraph & 根据表面图的高度更改颜色
- windows-10 - ClickOnce 应用程序无法启动
- python - 将行附加到熊猫中的组