MSTEST0052: 避免显式传递“DynamicDataSourceType”,而是使用默认的自动检测行为。

资产 价值
规则 ID MSTEST0052
标题 避免传递显式的“DynamicDataSourceType”并使用默认的自动检测行为
类别 Usage
修复是中断修复还是非中断修复 Non-breaking
默认启用 是的
默认严重性 警告
是在版本 中引入的 3.11.0
有修复代码的办法吗 是的

原因

DynamicDataAttribute 显式指定 PropertyMethod,而不是使用默认的 AutoDetect

规则说明

从 MSTest 3.8 开始,DynamicDataSourceType.AutoDetectDynamicDataAttribute 构造函数中 DynamicDataSourceType 参数的默认值。 此增强功能会自动检测数据源是属性、方法还是字段,而无需显式指定源类型。 使用 AutoDetect 使代码更易于维护并减少详细程度。

如何修复违规行为

DynamicDataSourceType属性中删除显式DynamicData参数,让框架自动检测源类型。

例如,更改以下项:

public static IEnumerable<object[]> TestData { get; } = new[]
{
    new object[] { 1, 2, 3 },
    new object[] { 4, 5, 9 }
};

[TestMethod]
[DynamicData(nameof(TestData), DynamicDataSourceType.Property)]
public void TestMethod(int a, int b, int expected)
{
    Assert.AreEqual(expected, a + b);
}

更改为:

public static IEnumerable<object[]> TestData { get; } = new[]
{
    new object[] { 1, 2, 3 },
    new object[] { 4, 5, 9 }
};

[TestMethod]
[DynamicData(nameof(TestData))]
public void TestMethod(int a, int b, int expected)
{
    Assert.AreEqual(expected, a + b);
}

何时禁止显示警告

不要禁止显示此规则的警告。 遵循分析器建议会导致测试代码中的干扰更少。