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

在MSTest中同时使用TestMethod与DynamicDataDisplayName的问题

MSTest中同时使用TestMethod自定义名称与DynamicDataDisplayName的解决方案

在MSTest里,当你同时标记[TestMethod("自定义名称")]和带DynamicDataDisplayName的[DynamicData]属性时,会出现DynamicDataDisplayName定义的自定义显示名不生效的问题——这是因为MSTest框架会优先使用[TestMethod]中设置的静态名称,覆盖动态生成的显示名逻辑。

要让二者的效果同时生效,只需调整写法:

  1. 移除[TestMethod]的自定义名称参数
  2. 在DynamicDataDisplayName指定的方法中,将原本想设置的基础名称与动态数据信息拼接起来

示例代码

// 移除TestMethod的Name参数
[TestMethod]
[DynamicData(nameof(MyTestObject), DynamicDataSourceType.Property, DynamicDataDisplayName = nameof(GetTestDisplayName))]
public void MyTestMethod(int input, int expected)
{
    // 你的测试逻辑
}

// 动态数据源
public static IEnumerable<object[]> MyTestObject => new[]
{
    new object[] {1, 2},
    new object[] {3, 4}
};

// 自定义显示名方法,拼接基础名称和动态数据
public static string GetTestDisplayName(MethodInfo methodInfo, object[] data)
{
    return $"My Test - 输入:{data[0]},预期结果:{data[1]}";
}

这样最终在测试运行器中,每个动态测试用例的显示名都会是My Test - 输入:1,预期结果:2、My Test - 输入:3,预期结果:4这类形式,既保留了你想要的基础测试名称,也实现了动态数据的自定义显示。

内容的提问来源于stack exchange,提问作者Cédrick Rauzy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:55:30