Teilen über


MSTest-Entwurfsregeln

Designregeln helfen Ihnen beim Erstellen und Verwalten von Testsuiten, die den richtigen Design- und bewährten Methoden entsprechen. Diese Regeln konzentrieren sich auf Die Teststruktur, bewährte Methoden und allgemeine Muster, die zu wartungsfähigem Testcode führen.

Regeln in dieser Kategorie

Regel-ID Title Schweregrad Fix verfügbar
MSTEST0004 Öffentliche Typen sollten Testklassen sein. Info Yes
MSTEST0006 Vermeiden Sie das ExpectedException-Attribut. Info Yes
MSTEST0015 Die Testmethode sollte nicht ignoriert werden. Keine (Zustimmung erforderlich) Nein
MSTEST0016 Die Testklasse sollte über eine Testmethode verfügen. Info Nein
MSTEST0019 Bevorzugen Sie TestInitialize gegenüber Konstruktoren. Keine (Zustimmung erforderlich) Yes
MSTEST0020 Bevorzugen Sie Konstruktoren gegenüber TestInitialize. Keine (Zustimmung erforderlich) Yes
MSTEST0021 Bevorzugen Sie Dispose gegenüber TestCleanup. Keine (Zustimmung erforderlich) Yes
MSTEST0022 Bevorzugen Sie TestCleanup gegenüber Dispose. Keine (Zustimmung erforderlich) Yes
MSTEST0025 Bevorzugen Sie Assert.Fail gegenüber immer-falschen Bedingungen. Info Yes
MSTEST0029 Öffentliche Methode sollte Testmethode sein. Info Yes
MSTEST0036 Verwenden Sie keine Schattierung. Warnung Nein
MSTEST0044 Bevorzugen Sie TestMethod gegenüber DataTestMethod. Info Yes
MSTEST0045 Verwenden Sie eine kooperative Abbruchmethode für einen Timeout. Info Yes

Häufige Szenarien

Testen der Klassenstruktur

Beim Erstellen von Testklassen tragen diese Regeln dazu bei, das richtige Design sicherzustellen:

  • MSTEST0004: Interne Hilfsklassen beibehalten, sollten nur Testklassen öffentlich sein.
  • MSTEST0016: Stellen Sie sicher, dass Testklassen mindestens eine Testmethode enthalten.
  • MSTEST0029: Öffentliche Methoden in Testklassen sollten Testmethoden sein.

Initialisierungsmuster

MSTest unterstützt sowohl Konstruktoren als auch TestInitialize-Methoden. Mit diesen sich gegenseitig ausschließenden Regeln können Sie ein einheitliches Muster erzwingen:

  • MSTEST0019: Erzwingen von TestInitialize für die Initialisierung (nützlich für asynchrone Szenarien).
  • MSTEST0020: Erzwingen von Konstruktoren für die Initialisierung (besser für Readonly-Felder).

Bereinigungsmuster

Wählen Sie in ähnlicher Weise zwischen Dispose und TestCleanup aus:

  • MSTEST0021: Dispose-Pattern für die Bereinigung erzwingen.
  • MSTEST0022: TestCleanup zur Bereinigung durchführen.

Bessere Assertionen

  • MSTEST0006: Verwenden Sie Assert.ThrowsExactly anstelle von [ExpectedException] für eine bessere Genauigkeit.
  • MSTEST0025: Verwenden Sie Assert.Fail anstelle von Assert.IsTrue(false).

Testqualität

  • MSTEST0015: Ignorierte Tests kennzeichnen (Opt-In-Regel).
  • MSTEST0036: Vermeiden Sie das Überschatten von Basisklassenmitgliedern.
  • MSTEST0044: Verwenden Sie TestMethod, es sei denn, datengesteuerte Tests sind erforderlich.
  • MSTEST0045: Aktivieren sie Abbruchtoken für die Timeoutbehandlung.