Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigentum | Wert |
|---|---|
| Regel-ID | MSTEST0069 |
| Title | Ein geerbtes [TestClass]-Attribut wird vom MSTest-Quellengenerator ignoriert. |
| Kategorie | Usage |
| Fix führt oder führt nicht zur Unterbrechung | Non-breaking |
| Standardmäßig aktiviert | Yes |
| Voreingestellte Schwere | Warning |
| wurde in Version eingeführt. | 4.3.0 |
| Gibt es eine Codekorrektur | No |
Hinweis
Dieser Analyzer wird im MSTest.SourceGeneration Paket ausgeliefert und wird nur für Projekte geladen, die sich für den MSTest-Spiegelungsquellengenerator entschieden haben, bei dem es sich um ein experimentelles Feature handelt. Sie gilt nicht, wenn die standardmäßige spiegelbasierte Ermittlung verwendet wird.
Ursache
Eine Klasse ist durch ein [TestClass]-Attribut, das sie von einer Basisklasse erbt, als MSTest-Testklasse vorgesehen, anstatt [TestClass] direkt zu deklarieren.
Regelbeschreibung
Der MSTest-Quellgenerator ermittelt Testklassen mithilfe von ForAttributeWithMetadataName, wobei die Vererbungshierarchie nicht berücksichtigt wird. Eine Klasse, die darauf angewiesen ist, [TestClass] von einem Basistyp zu erben, wird bei der quellgenerierten Erkennung automatisch übersprungen und ist nicht ausführbar, wenn der quellgenerierte Anbieter das aktive Reflexions-Back-End ist.
[TestClass]
public class BaseTests
{
}
// Violation: relies on the inherited [TestClass] attribute.
public class DerivedTests : BaseTests
{
[TestMethod]
public void Test()
{
}
}
Wie man Verstöße behebt
Wenden Sie direkt [TestClass] auf die abgeleitete Klasse an, sodass sie erkannt wird, wenn die quellgenerierte Ermittlung aktiv ist.
[TestClass]
public class BaseTests
{
}
[TestClass]
public class DerivedTests : BaseTests
{
[TestMethod]
public void Test()
{
}
}
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie Warnungen von dieser Regel nicht, wenn die Quellgenerierung aktiviert ist, da die betroffene Testklasse nicht erkannt oder ausgeführt wird. Sie können sie unterdrücken, wenn die Klasse eigentlich keine Testklasse sein soll.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable MSTEST0069
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0069
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad auf none in der Konfigurationsdatei fest.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0069.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.