Teilen über


MSTest-Nutzungsregeln

Verwendungsregeln unterstützen die ordnungsgemäße Verwendung von MSTest-Attributen, -Methoden und -Mustern. Diese Regeln erfassen häufige Fehler und stellen sicher, dass Ihre Tests den Anforderungen und Konventionen des Frameworks entsprechen.

Regeln in dieser Kategorie

Regel-ID Title Schweregrad Fix verfügbar
MSTEST0002 Die Testklasse sollte gültig sein. Warnung Yes
MSTEST0003 Die Testmethode sollte gültig sein. Warnung → Fehler* Yes
MSTEST0005 TestContext sollte gültig sein. Warnung Yes
MSTEST0007 Verwenden Sie das Attribut für die Testmethode. Warnung Nein
MSTEST0008 TestInitialize sollte gültig sein. Warnung Yes
MSTEST0009 TestCleanup sollte gültig sein. Warnung Yes
MSTEST0010 ClassInitialize sollte gültig sein. Warnung Yes
MSTEST0011 ClassCleanup sollte gültig sein. Warnung Yes
MSTEST0012 AssemblyInitialize sollte gültig sein. Warnung Yes
MSTEST0013 AssemblyCleanup sollte gültig sein. Warnung Yes
MSTEST0014 DataRow sollte gültig sein. Warnung Yes
MSTEST0017 Assertionsargumente sollten in der richtigen Reihenfolge übergeben werden. Info Yes
MSTEST0018 DynamicData sollte gültig sein. Warnung Yes
MSTEST0023 Boolean-Assertion nicht negieren. Info Yes
MSTEST0024 Speichern Sie keinen statischen TestContext. Warnung Nein
MSTEST0026 Assertions-Argumente sollten bedingten Zugriff vermeiden. Info Nein
MSTEST0030 Der Typ, der die Testmethode enthält, sollte eine Testklasse sein. Warnung Yes
MSTEST0031 Verwenden Sie "System.ComponentModel.DescriptionAttribute" nicht. Info Yes
MSTEST0032 Überprüfen Sie die immer wahre Assertion-Bedingung. Info Nein
MSTEST0034 Verwenden Sie ClassCleanupBehavior.EndOfClass. Info Yes
MSTEST0035 Verwenden Sie DeploymentItem mit Testmethode oder Testklasse. Info Nein
MSTEST0037 Verwenden Sie die richtigen Assert-Methoden. Info Yes
MSTEST0038 Vermeiden Sie Assert.AreSame mit Werttypen. Info Yes
MSTEST0039 Verwenden Sie neuere Assert.Throws-Methoden. Info Yes
MSTEST0040 Vermeiden Sie die Verwendung von Assertionen im asynchronen Void-Kontext. Warnung Nein
MSTEST0041 Verwenden Sie bedingungsbasierte Attribute mit Testklasse. Warnung Nein
MSTEST0042 Duplikat von DataRow. Warnung Nein
MSTEST0043 Verwenden Sie das Wiederholungsattribut für die Testmethode. Warnung → Fehler* Yes
MSTEST0046 Verwenden Sie Assert anstelle von StringAssert. Info Yes
MSTEST0048 Verwendung der TestContext-Eigenschaft. Warnung Nein
MSTEST0049 Flow Testkontext-Abbruchtoken. Info Yes
MSTEST0050 Die globale Prüfvorrichtung sollte gültig sein. Warnung Yes
MSTEST0051 Assert.Throws muss eine einzelne Anweisung enthalten. Info Yes
MSTEST0052 Vermeiden Sie expliziten DynamicDataSourceType. Info Yes
MSTEST0053 Vermeiden Sie Assertion-Formatparameter. Info Yes
MSTEST0054 Verwenden Sie die CancellationToken-Eigenschaft. Info Yes
MSTEST0055 Ignorieren Sie den Rückgabewert der Zeichenfolgenmethode nicht. Warnung Nein
MSTEST0056 TestMethodAttribute sollte DisplayName richtig festlegen. Info Yes
MSTEST0057 TestMethodAttribute sollte Quellinformationen weitergeben. Warnung Nein
MSTEST0058 Vermeiden Sie Assertionen in Catch-Blöcken. Info Nein
MSTEST0059 Verwenden Sie das Attribut "Parallelize" richtig. Warnung Nein
MSTEST0060 Duplicate TestMethodAttribute. Warnung Yes
MSTEST0061 Verwenden Sie das OSCondition-Attribut anstelle der Laufzeitüberprüfung. Info Yes
MSTEST0062 Vermeiden Sie Parameter der Out/Ref-Testmethode. Warnung Yes
MSTEST0063 Die Testklasse muss einen gültigen Konstruktor haben. Warnung Nein

* Eskaliert an Fehler in Recommended und All Modi.

Häufige Szenarien

Überprüfung der Teststruktur

Stellen Sie sicher, dass Ihre Testklassen, Methoden und Geräte MSTest-Anforderungen erfüllen:

  • MSTEST0002: Testklassenlayoutanforderungen (z. B. öffentlich, nicht statisch).
  • MSTEST0003: Anforderungen des Testmethodenlayouts (⚠ eskaliert auf Fehler).
  • MSTEST0030: Methoden mit [TestMethod] müssen in einer [TestClass] enthalten sein.
  • MSTEST0063: Testen der Klassenkonstruktorüberprüfung.

Lifecycle-Methoden

Validieren von Initialisierungs- und Bereinigungsmethoden:

Datengesteuerte Tests

Sicherstellen, dass Datenattribute ordnungsgemäß verwendet werden:

Schreiben besserer Assertionen

Regeln für die korrekte und effektive Assertionsnutzung:

  • MSTEST0017: Übergeben Sie den Erwarteten/Istwert in der richtigen Reihenfolge.
  • MSTEST0023: Verwerfen Sie keine Bedingungen (verwenden Sie Assert.IsFalse direkt).
  • MSTEST0026: Vermeiden Sie nullbedingte Operatoren in Assertionen.
  • MSTEST0032: Überprüfen Sie immer wahre Bedingungen.
  • MSTEST0037: Verwenden Sie die am besten geeignete Assert-Methode.
  • MSTEST0038: Verwenden Sie AreSame nicht mit Werttypen.
  • MSTEST0039: Verwenden Sie Assert.ThrowsExactly (neuere API).
  • MSTEST0046: Prefer Assert over StringAssert.
  • MSTEST0051: Assert.Throws sollte einzelne Anweisung testen.
  • MSTEST0053: Verwenden Sie die Zeichenfolgeninterpolation anstelle von Formatparametern.
  • MSTEST0058: Keine Assertionen in Catch-Blöcke einfügen.

TestContext-Verwendung

Ordnungsgemäße Verwendung des TestContext-Objekts:

  • MSTEST0005: TestContext-Eigenschaftsüberprüfung.
  • MSTEST0024: Speichern Sie TestContext nicht in statischen Feldern.
  • MSTEST0048: Eingeschränkter Zugriff auf Eigenschaften in Testumgebungen.
  • MSTEST0049: Ablaufabbruchtoken von TestContext.
  • MSTEST0054: Verwenden Sie die Eigenschaft "TestContext.CancellationToken".

Asynchrone Muster

Regeln für asynchronen Testcode:

  • MSTEST0040: Vermeiden Sie Assertionen in asynchronen void-Methoden.

Testkonfiguration

  • MSTEST0031: Verwenden Sie die richtigen Attribute (nicht "System.ComponentModel.Description").
  • MSTEST0035: DeploymentItem-Verwendung.
  • MSTEST0041: Bedingungsattribute müssen sich auf Testklassen befinden.
  • MSTEST0043: Wiederholungsattribute müssen sich auf Testmethoden (⚠\ eskaliert auf Fehler) befinden.
  • MSTEST0055: Ignorieren Sie keine Rückgabewerte der Zeichenfolgenmethode.
  • MSTEST0056: Legen Sie "DisplayName" auf "TestMethodAttribute" richtig fest.
  • MSTEST0057: Verteilen von Quellinformationen in benutzerdefinierten TestMethodAttribute.
  • MSTEST0059: Verwenden Sie nicht Parallelize und DoNotParallelize.
  • MSTEST0060: Vermeiden Sie doppelte TestMethodAttribute.
  • MSTEST0061: Verwenden Sie das OSCondition-Attribut für Plattformüberprüfungen.