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.
| Eigenschaft | Wert |
|---|---|
| Regel-ID | MSTEST0082 |
| Title | Eine Testklasse erbt einen Lebenszyklus oder eine Testmethode von einer anderen MSTest-Version. |
| Kategorie | Usage |
| Die Behebung ist eingreifend oder nicht eingreifend | Non-breaking |
| Standardmäßig aktiviert | Ja |
| Voreingestellte Schwere | Warning |
| wurde in Version eingeführt. | 4.4.0 (Vorschau) |
| Gibt es eine Codekorrektur | No |
Important
Dieser Analyzer ist für MSTest 4.4 geplant und ist nur in Vorschaubuilds verfügbar, bis MSTest 4.4.0 veröffentlicht wird.
Ursache
Eine auffindbare Testklasse erbt eine öffentliche Testmethode oder Lebenszyklusmethode von einer Assembly, die auf eine andere Hauptversion von MSTest verweist.
Regelbeschreibung
MSTest gleicht Test- und Lebenszyklusattribute nach exakter Laufzeittypidentität ab. MSTest v3 definiert diese Attribute in Microsoft.VisualStudio.TestPlatform.TestFramework, während MSTest v4 sie in MSTest.TestFrameworkdefiniert. Wenn eine Basisbibliothek und ein abgeleitetes Testprojekt unterschiedliche Hauptversionen verwenden, ignoriert der Adapter automatisch geerbte Attribute von der anderen Frameworkassembly. Daher werden geerbte Tests nicht erkannt, und geerbte Initialisierungs- oder Bereinigungsmethoden werden nicht ausgeführt.
Beispielsweise kann eine freigegebene Testbibliothek, die mit MSTest v3 erstellt wurde, folgendes deklarieren:
public abstract class SharedTests
{
[TestMethod] public void InheritedTest() { }
}
Ein MSTest v4-Projekt, das von der Basisklasse abgeleitet wird, löst die Diagnose aus:
[TestClass]
public sealed class ProductTests : SharedTests { } // Violation
Die Analyse überprüft geerbte Testmethoden, Testinitialisierungs- und Bereinigungsmethoden sowie Klasseninitialisierungs- und Bereinigungsmethoden, die für die Ausführung für abgeleitete Klassen konfiguriert sind.
Wie man Verstöße behebt
Verweisen Sie auf die gleiche MSTest-Hauptversion aus der Basisbibliothek und auf das abgeleitete Testprojekt. Kompilieren Sie die Assembly neu, die die Basisklasse deklariert, und kompilieren Sie bei einem benutzerdefinierten Attribut, das von einem MSTest-Attribut abgeleitet ist, die Assembly neu, die das benutzerdefinierte Attribut deklariert.
Wann sollten Warnungen unterdrückt werden?
Sie sollten keine Warnungen von dieser Regel unterdrücken. Ein Verstoß bedeutet, dass MSTest geerbte Tests oder Lifecycle-Methoden stillschweigend überspringt.
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 MSTEST0082
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0082
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.MSTEST0082.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.