Partilhar via


MSTEST0052: Evite passar um 'DynamicDataSourceType' explícito e use o comportamento de deteção automática padrão

Propriedade Valor
ID da regra MSTEST0052
Título Evite passar um 'DynamicDataSourceType' explícito e use o comportamento de deteção automática padrão
Categoria Usage
A correção é invasiva ou não invasiva Non-breaking
Ativado por padrão Yes
Severidade padrão Advertência
Introduzido na versão 3.11.0
Existe uma correção de código Yes

Motivo

A DynamicDataAttribute especifica Property explicitamente ou Method em vez de usar o padrão AutoDetect.

Descrição da regra

Começando com MSTest 3.8, DynamicDataSourceType.AutoDetect é o valor padrão para o DynamicDataSourceType parâmetro no DynamicDataAttribute construtor. Esse aprimoramento deteta automaticamente se a fonte de dados é uma propriedade, método ou campo, eliminando a necessidade de especificar explicitamente o tipo de fonte. O uso AutoDetect torna o código mais fácil de manter e reduz a verbosidade.

Como corrigir violações

Remova o DynamicDataSourceType parâmetro explícito DynamicData do atributo e deixe a estrutura detetar automaticamente o tipo de origem.

Por exemplo, altere isto:

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);
}

Para isso:

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);
}

Quando suprimir avisos

Não suprima avisos desta regra. Seguir a sugestão do analisador leva a menos ruído no código de teste.