Freigeben über


MSTEST0060: Vermeiden doppelter Testmethodenattribute

Eigentum Wert
Regel-ID MSTEST0060
Title Vermeiden doppelter Testmethodenattribute
Kategorie Usage
Die Behebung ist eingreifend oder nicht eingreifend Non-breaking
Standardmäßig aktiviert Yes
Voreingestellte Schwere Warnung
wurde in Version eingeführt. 4.1.0
Gibt es eine Codekorrektur Nein

Ursache

Eine Testmethode verfügt über mehrere TestMethodAttribute Deklarationen.

Regelbeschreibung

Eine Testmethode sollte nur ein Attribut aufweisen, das aus TestMethodAttribute abgeleitet ist. Wenn mehrere Testmethodenattribute (wie [TestMethod] und [UITestMethod]) für dieselbe Methode vorhanden sind, wird nur ein Attribut verwendet (das erste Attribut, das von Reflection zurückgegeben wird), was verwirrend sein kann und zu unbeabsichtigter Testausführung führen kann.

[TestClass]
public class TestClass
{
    [TestMethod]
    [UITestMethod] // Violation
    public void TestMethod1()
    {
        // Test code
    }
}

Wie man Verstöße behebt

Entfernen Sie das doppelte Attribut, und behalten Sie nur das Attribut bei, das dem Zweck Ihrer Testmethode entspricht.

[TestClass]
public class TestClass
{
    [TestMethod]
    public void TestMethod1()
    {
        // Test code
    }
}

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnungen von dieser Regel. Wenn mehrere Testmethodenattribute vorhanden sind, werden mehrdeutige Testkonfigurationen erstellt, bei denen nur ein Attribut verwendet wird. Dies kann Zu Verwirrung darüber führen, welches Testverhalten tatsächlich angewendet wird.

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 MSTEST0060
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0060

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, setzen Sie dessen Schweregrad auf none in der Konfigurationsdatei fest.

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0060.severity = none

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