| 资产 | 价值 |
|---|---|
| 规则 ID | MSTEST0052 |
| 标题 | 避免传递显式的“DynamicDataSourceType”并使用默认的自动检测行为 |
| 类别 | Usage |
| 修复是中断修复还是非中断修复 | Non-breaking |
| 默认启用 | 是的 |
| 默认严重性 | 警告 |
| 是在版本 中引入的 | 3.11.0 |
| 有修复代码的办法吗 | 是的 |
原因
DynamicDataAttribute 显式指定 Property 或 Method,而不是使用默认的 AutoDetect。
规则说明
从 MSTest 3.8 开始,DynamicDataSourceType.AutoDetect 是 DynamicDataAttribute 构造函数中 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);
}
何时禁止显示警告
不要禁止显示此规则的警告。 遵循分析器建议会导致测试代码中的干扰更少。