You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MSTest的[DynamicData]进行单元测试时遇参数不匹配异常

解决MSTest DynamicData参数数量不匹配异常

错误原因

你的GetTestData方法返回的数据源格式不符合MSTest的要求:

  • MSTest要求DynamicData的每个枚举元素是一个参数数组,数组长度必须和测试方法的参数数量完全一致。
  • 你的测试方法TestMethod3只接受1个data类型参数,但你一次性返回了包含2个data对象的数组,MSTest会尝试把这2个对象作为2个参数传递给测试方法,导致参数数量不匹配,触发TargetParameterCountException。

修正方案

调整GetTestData的返回逻辑,每个测试用例单独返回一个长度为1的数组(对应测试方法的单个参数):

[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<object[]> GetTestData()
{
    // 每个用例返回包含单个data对象的数组
    data data1 = new data();
    data1.number = 1;
    data1.size = 1;
    yield return new object[] { data1 };

    data data2 = new data();
    data2.number = 10;
    data2.size = 2;
    yield return new object[] { data2 };
}

额外注意事项

  • 确保data类是public访问级别,否则MSTest可能无法正常读取其属性值。
  • 推荐将数据源的返回类型改为IEnumerable<object[]>,这是MSTest官方推荐的标准格式,兼容性更好。

内容的提问来源于stack exchange,提问作者Gopal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:42:41