Condividi tramite


MSTEST0052: evitare di passare un 'DynamicDataSourceType' esplicito e usare il comportamento di rilevamento automatico predefinito

Proprietà Value
ID Regola MSTEST0052
Titolo Evitare di passare un 'DynamicDataSourceType' esplicito e usare il comportamento di rilevamento automatico predefinito
Categoria Usage
La correzione causa un'interruzione o meno Non causa un'interruzione
Abilitato per impostazione predefinita Yes
Gravità predefinita Avvertimento
Introdotto nella versione 3.11.0
È presente una correzione del codice Yes

Motivo

Un DynamicDataAttribute specifica esplicitamente Property o Method anziché usare il predefinito AutoDetect.

Descrizione regola

A partire da MSTest 3.8, DynamicDataSourceType.AutoDetect è il valore predefinito per il DynamicDataSourceType parametro nel DynamicDataAttribute costruttore. Questo miglioramento rileva automaticamente se l'origine dati è una proprietà, un metodo o un campo, eliminando la necessità di specificare in modo esplicito il tipo di origine. L'uso di AutoDetect rende il codice più manutenibile e riduce il livello di dettaglio.

Come correggere le violazioni

Rimuovere il parametro esplicito DynamicDataSourceType dall'attributo DynamicData e consentire al framework di rilevare automaticamente il tipo di origine.

Ad esempio, modificare il codice seguente:

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

In questa:

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 eliminare gli avvisi

Non eliminare gli avvisi da questa regola. Dopo il suggerimento dell'analizzatore si verifica un minor rumore nel codice di test.