Teilen über


Regeln zur MSTest-Unterdrückung doppelter Warnungen

Unterdrückungsregeln schalten Diagnosen von anderen Analyseprogrammen (z. B. Roslyn- oder Visual Studio-Threading-Analysatoren) automatisch aus, die im Kontext von MSTest-Tests nicht anwendbar sind.

Regeln in dieser Kategorie

Regel-ID Title Unterdrücken
MSTEST0027 Unterdrücken Sie asynchrones Suffix für Testmethoden. VSTHRD200
MSTEST0028 Unterdrücken sie asynchrones Suffix für Testinstallationsmethoden. VSTHRD200
MSTEST0033 Unterdrücken eines nicht nullfähigen Verweises, der nicht initialisiert wird. CS8618

Funktionsweise von Unterdrückungsregeln

Diese Regeln erzeugen keine eigene Diagnose. Stattdessen unterdrücken sie Warnungen von anderen Analysegeräten, die andernfalls fälschlicherweise im Testcode ausgelöst würden.

VSTHRD200: Verwenden des Asynchronen Suffixs für asynchrone Methoden

Unterdrückt von: MSTEST0027, MSTEST0028

Warum unterdrücken: Visual Studio-Threadinganalyse (VSTHRD200) empfiehlt, dass asynchrone Methoden über ein "Async"-Suffix verfügen sollten. Testmethoden und Testvorrichtungsmethoden werden jedoch von MSTest über Attribute und keine Namenskonventionen ermittelt. Das Hinzufügen von "Async"-Suffixen zu Testmethodennamen (z. B TestLoginAsync. ) bietet keinen Wert und kann Testnamen weniger lesbar machen.

Beispiel:

[TestMethod]
public async Task TestLogin() // VSTHRD200 would warn without suppression
{
    await LoginAsync();
    // ...
}

CS8618: Nicht-nullbarer Verweis nicht initialisiert

Unterdrückt von: MSTEST0033

Warum unterdrücken: Beim Verwenden von nullable Referenztypen warnt der Compiler vor nicht-nullbaren Eigenschaften, die in Konstruktoren nicht initialisiert werden. MSTest initialisiert die TestContext Eigenschaft jedoch automatisch, bevor Testmethoden ausgeführt werden, sodass die Warnung nicht angewendet wird.

Beispiel:

[TestClass]
public class MyTests
{
    public TestContext TestContext { get; set; } = null!; // CS8618 would warn without suppression
    
    [TestMethod]
    public void TestSomething()
    {
        // TestContext is guaranteed to be non-null here
        TestContext.WriteLine("Test output");
    }
}

Deaktivieren von Unterdrückungsregeln

Wenn Sie diese Warnungen lieber sehen möchten, deaktivieren Sie die Unterdrückungsregeln in Ihrem .editorconfig:

[*.cs]
dotnet_diagnostic.MSTEST0027.severity = none
dotnet_diagnostic.MSTEST0028.severity = none
dotnet_diagnostic.MSTEST0033.severity = none