Pravidla návrhu MSTest

Pravidla návrhu pomáhají vytvářet a udržovat testovací sady, které odpovídají správnému návrhu a osvědčeným postupům. Tato pravidla se zaměřují na strukturu testů, osvědčené postupy a běžné vzory, které vedou k udržovatelnému testovacímu kódu.

Pravidla v této kategorii

ID pravidla Title Závažnost K dispozici oprava
MSTEST0004 Veřejné typy by měly být testovacími třídami. Informace Ano
MSTEST0006 Vyhněte se atributu ExpectedException. Informace Ano
MSTEST0015 Testovací metoda by neměla být ignorována. Žádné (výslovný souhlas) Ne
MSTEST0016 Testovací třída by měla mít testovací metodu. Informace Ne
MSTEST0019 Preferujte TestInitialize před konstruktory. Žádné (výslovný souhlas) Ano
MSTEST0020 Upřednostňujte konstruktory před TestInitialize. Žádné (výslovný souhlas) Ano
MSTEST0021 Preferujte Dispose před TestCleanup. Žádné (výslovný souhlas) Ano
MSTEST0022 Preferujte TestCleanup před Dispose. Žádné (výslovný souhlas) Ano
MSTEST0025 Preferujte Assert.Fail před vždy nepravdivými podmínkami. Informace Ano
MSTEST0029 Veřejná metoda by měla být testovací metoda. Informace Ano
MSTEST0036 Nepoužívejte stínování. Výstraha Ne
MSTEST0044 Preferujte TestMethod před DataTestMethod. Informace Ano
MSTEST0045 Použijte kooperativní zrušení pro časový limit. Informace Ano
MSTEST0066 [Ignore] by mělo specifikovat odůvodnění. Informace Ne

Obvyklé scénáře

Struktura testovací třídy

Při vytváření testovacích tříd pomáhají tato pravidla zajistit správný návrh:

  • MSTEST0004: Udržovat pomocné třídy interně, měly by být veřejné pouze třídy testů.
  • MSTEST0016: Ujistěte se, že třídy testů obsahují alespoň jednu testovací metodu.
  • MSTEST0029: Veřejné metody ve třídách testů by měly být testovací metody.

Vzory inicializace

MSTest podporuje jak konstruktory, tak metody TestInitialize. Tato vzájemně se vylučují pravidla umožňují vynutit konzistentní vzor:

  • MSTEST0019: Vynucování inicializace testInitialize (užitečné pro asynchronní scénáře)
  • MSTEST0020: Vynucujte konstruktory pro inicializaci (lepší pro pole jen pro čtení).

Vzory čištění

Podobně si vyberte mezi Dispose a TestCleanup:

  • MSTEST0021: Dodržujte vzor Dispose pro vyčištění.
  • MSTEST0022: Zajistěte TestCleanup pro vyčištění.

Lepší aserce

  • MSTEST0006: Pro lepší přesnost použijte Assert.ThrowsExactly místo funkce [ExpectedException].
  • MSTEST0025: Místo Assert.IsTrue(false) použijte Assert.Fail.

Kvalita testu

  • MSTEST0015: Příznak ignorovaných testů (pravidlo výslovného souhlasu).
  • MSTEST0036: Vyhněte se stínování členů základní třídy.
  • MSTEST0044: Použijte TestMethod, pokud není potřeba testování řízené daty.
  • MSTEST0045: Povolit cancellační tokeny pro řízení časových limitů.
  • MSTEST0066: Zadejte na [Ignore] zprávu s odůvodněním.