我正在使用 MSTest 执行一些单元测试,我了解到我可以使用 [DynamicData] 属性来输入不同的情况进行测试。我已从静态方法返回 object[],在静态方法内执行对象分配给 List 并返回该列表 目的。在这种情况下我得到 System.Reflection.TargetParameterCountException:运行测试用例时参数计数不匹配。 异常。作为参考,我添加了示例代码。
测试方法:
[TestMethod]
[DynamicData(nameof(GetTestData), DynamicDataSourceType.Method)]
public void TestMethod3(data obj)
{
var _controller = new SampleController();
var result = _controller.GetAlertTypes(obj.number, obj.size);
Assert.IsNotNull(result);
}
private static IEnumerable<data[]> GetTestData()
{
List<data> result = new List<data>();
data data1 = new data();
data1.number = 1;
data1.size = 1;
result.Add(data1);
data data2 = new data();
data2.number = 10;
data2.size = 2;
result.Add(data2);
yield return result.ToArray();
}
您将返回
IEnumerable<data>
作为 GetTestData
的返回类型。
但您在测试中接受了data obj
。
动态数据必须返回一个可枚举,因为每个项目都是不同的测试用例,但您在内部返回另一个可枚举,而不是单个数据。
你的方法应该看起来更像这样
private static IEnumerable<data> GetTestData()
{
data data1 = new data();
data1.number = 1;
data1.size = 1;
yield return data1; // Data for case #1
data data2 = new data();
data2.number = 10;
data2.size = 2;
yield return data2; // Data for case #2
}