使用 MSTest 的 C# 单元测试 DynamicData

问题描述 投票:0回答:1

我正在使用 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();
        }
c# unit-testing mstest
1个回答
0
投票

您将返回

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
}
© www.soinside.com 2019 - 2024. All rights reserved.