Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| 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.