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 abilitato il generatore di codice sorgente basato su reflection di MSTest, che rappresenta una funzionalità sperimentale. 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.