MSTEST0069: [TestClass] ereditato viene ignorato dal generatore di codice sorgente MSTest

Proprietà Valore
ID regola MSTEST0069
Title [TestClass] ereditato viene ignorato dal generatore di codice sorgente di MSTest
Categoria Usage
La modifica è dirompente o non dirompente Non-breaking
Abilitato per impostazione predefinita Sì
Gravità predefinita Avvertimento
introdotta nella versione 4.3.0
È presente una correzione del codice No

Nota

Questo analizzatore viene fornito nel pacchetto MSTest.SourceGeneration e viene caricato solo per i progetti che hanno attivato il generatore di codice sorgente basato sulla reflection di MSTest. Non si applica quando si usa il rilevamento predefinito basato sulla reflection.

Cause

Una classe è considerata una classe di test MSTest tramite un attributo [TestClass] ereditato da una classe base, anziché dichiarare direttamente [TestClass].

Descrizione regola

Il generatore di origine MSTest enumera le classi di test usando ForAttributeWithMetadataName, che non segue l'ereditarietà. Una classe che dipende dall'ereditare [TestClass] da un tipo base viene silenziosamente esclusa dal rilevamento generato dal codice sorgente e non potrà essere eseguita quando il provider generato dal codice sorgente è il backend di reflection attivo.

[TestClass]
public class BaseTests
{
}

// Violation: relies on the inherited [TestClass] attribute.
public class DerivedTests : BaseTests
{
    [TestMethod]
    public void Test()
    {
    }
}

Come correggere le violazioni

Applicare [TestClass] direttamente alla classe derivata in modo che venga individuata quando l'individuazione generata dall'origine è attiva.

[TestClass]
public class BaseTests
{
}

[TestClass]
public class DerivedTests : BaseTests
{
    [TestMethod]
    public void Test()
    {
    }
}

Quando eliminare gli avvisi

Non sopprimere gli avvisi per questa regola quando la generazione del codice sorgente è abilitata, perché la classe di test interessata non verrà rilevata né eseguita. È possibile eliminarlo se la classe non è effettivamente destinata a essere una classe di test.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

#pragma warning disable MSTEST0069
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0069

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0069.severity = none

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.