Sprache

MSTEST0086: Entfernen Sie das redundante Testmethodenattribut

Eigentum Wert
Regel-ID MSTEST0086
Title Entfernen des Attributs für redundante Testmethoden
Kategorie Usage
Fix führt oder führt nicht zur Unterbrechung Non-breaking
Standardmäßig aktiviert Yes
Voreingestellte Schwere Info
wurde in Version eingeführt. 4.5.0
Gibt es eine Codekorrektur Ja, nur für C#

Ursache

Eine Testmethode deklariert ein MSTest-Attribut, dessen effektives Verhalten bereits durch die enthaltende Testklasse oder eine Basistestklasse bereitgestellt wird.

Regelbeschreibung

Doppelte Attribute machen die effektive Testrichtlinie schwieriger zu verstehen und zu verwalten. Die Regel meldet Bedingungen auf Methodenebene, Wiederholungseinstellungen, Isolationseinstellungen, Metadaten, Bereitstellungselemente oder Abhängigkeiten nur, wenn die Konfiguration auf Klassenebene bereits ein gleichwertiges oder restriktives Verhalten bereitstellt.

Die Regel umfasst OSCondition, ArchitectureCondition, CICondition, ResourceLock, TestCategory, DoNotParallelize, Ignore, TestProperty, Retry, DeploymentItem und DependsOn.

Für OSCondition, ArchitectureCondition, CICondition, Retry, Ignore und DependsOn meldet die Regel redundante Attribute nur für Methoden, die in abgeschlossenen Testklassen deklariert sind. Diese Attribute auf Klassenebene werden nicht geerbt, sodass das Entfernen eines Attributs auf Methodenebene aus einer nicht versiegelten Klasse ändern könnte, wie ein geerbter Test in einer abgeleiteten Klasse ausgeführt wird.

Bei DoNotParallelize, ResourceLock, TestCategory, TestProperty und DeploymentItem berücksichtigt die Regel auch Attribute für Basisklassen. Die Regel meldet ExecutableCondition, MemberCondition oder benutzerdefinierte Attribute nicht.

[TestClass, DoNotParallelize]
public class Tests
{
    [TestMethod, DoNotParallelize] // Violation
    public void Test() { }
}

Wie man Verstöße behebt

Entfernen Sie das redundante Attribut auf Methodenebene. Behalten Sie ein Attribut für die Methode bei, wenn sie das Verhalten auf Klassenebene ändert oder einschränkt.

[TestClass, DoNotParallelize]
public class Tests
{
    [TestMethod] public void Test() { }
}

Ein C#-Codekorrektur entfernt das redundante Attribut. Visual Basic meldet die Diagnose, stellt aber keine automatische Korrektur bereit.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie die Regel, wenn das doppelte Attribut absichtlich eine lokale Richtlinie dokumentiert und dieser Dokumentationswert die Wartungskosten überwiegt.

Unterdrücken einer Warnung

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

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.MSTEST0086.severity = none

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Siehe auch