Pravidla použití MSTest

Pravidla použití podporují správné použití atributů, metod a vzorů MSTest. Tato pravidla zachytí běžné chyby a zajistí, aby vaše testy dodržovaly požadavky a konvence architektury.

Pravidla v této kategorii

ID pravidla Title Závažnost K dispozici oprava
MSTEST0002 Testovací třída by měla být platná. Výstraha Ano
MSTEST0003 Testovací metoda by měla být platná. Upozornění → Chyba* Ano
MSTEST0005 TestContext by měl být platný. Výstraha Ano
MSTEST0007 Použijte atribut pro testovací metodu. Výstraha Ne
MSTEST0008 TestInitialize by měl být platný. Výstraha Ano
MSTEST0009 TestCleanup by měl být platný. Výstraha Ano
MSTEST0010 ClassInitialize by měl být platný. Výstraha Ano
MSTEST0011 TřídaCleanup by měla být platná. Výstraha Ano
MSTEST0012 AssemblyInitialize by mělo být platné. Výstraha Ano
MSTEST0013 AssemblyCleanup by měl být platný. Výstraha Ano
MSTEST0014 DataRow by měl být platný. Výstraha Ano
MSTEST0017 Argumenty asercí by měly být předány ve správném pořadí. Informace Ano
MSTEST0018 DynamicData by měla být platná. Výstraha Ano
MSTEST0023 Neznegujte booleovské tvrzení. Informace Ano
MSTEST0024 Neukládejte statický testContext. Výstraha Ne
MSTEST0026 Asertační argumenty by se měly vyhnout podmíněnému přístupu. Informace Ne
MSTEST0030 Typ obsahující testovací metodu by měl být testovací třídou. Výstraha Ano
MSTEST0031 Nepoužívejte System.ComponentModel.DescriptionAttribute. Informace Ano
MSTEST0032 Zkontrolujte podmínku assert, která je vždy pravdivá. Informace Ne
MSTEST0034 Použijte ClassCleanupBehavior.EndOfClass. Informace Ano
MSTEST0035 Použijte DeploymentItem s testovací metodou nebo testovací třídou. Informace Ne
MSTEST0037 Použijte správné metody assert. Informace Ano
MSTEST0038 Vyhněte se Assert.AreSame s typy hodnot. Informace Ano
MSTEST0039 Použijte novější metody Assert.Throws. Informace Ano
MSTEST0040 Vyhněte se použití asertací v asynchronním kontextu void. Výstraha Ne
MSTEST0041 Používejte atributy založené na podmínce s testovací třídou. Výstraha Ne
MSTEST0042 Duplicitní datový řádek. Výstraha Ne
MSTEST0043 Pro testovací metodu použijte atribut opakování. Upozornění → Chyba* Ano
MSTEST0046 Místo StringAssert použijte assert. Informace Ano
MSTEST0048 Použití vlastnosti TestContext Výstraha Ne
MSTEST0049 Flow TestContext CancellationToken. Informace Ano
MSTEST0050 Globální zkušební zařízení by mělo být platné. Výstraha Ano
MSTEST0051 Assert.Throws by měl obsahovat jeden příkaz. Informace Ano
MSTEST0052 Vyhněte se explicitnímu dynamicDataSourceType. Informace Ano
MSTEST0053 Vyhněte se parametrům formátu Assert. Informace Ano
MSTEST0054 Použijte vlastnost CancellationToken. Informace Ano
MSTEST0055 Neignorujte návratovou hodnotu řetězcové metody. Výstraha Ne
MSTEST0056 TestMethodAttribute by měl správně nastavit DisplayName. Informace Ano
MSTEST0057 TestMethodAttribute by měl šířit informace o zdroji. Výstraha Ne
MSTEST0058 Vyhněte se asertům v blocích catch. Informace Ne
MSTEST0059 Použijte atribut Parallelize správně. Výstraha Ne
MSTEST0060 Duplikovat TestMethodAttribute. Výstraha Ano
MSTEST0061 Místo kontroly modulu runtime použijte atribut OSCondition. Informace Ano
MSTEST0062 Vyhněte se parametrům testovací metody out/ref. Výstraha Ano
MSTEST0063 Testovací třída by měla mít platný konstruktor. Výstraha Ne
MSTEST0064 Upřednostňujte asynchronní asertační metody. Informace Ne
MSTEST0065 Vyhněte se použití Assert.AreEqual u typů kolekcí. Výstraha Ne
MSTEST0067 Vyhněte se synchronnímu blokování volání v testovacím kódu. Informace (ve výchozím nastavení zakázané) Ne
MSTEST0068 Používejte Assert místo CollectionAssert. Informace Ano
MSTEST0069 Zděděné [TestClass] je ignorováno generátorem zdroje MSTest. Výstraha Ne
MSTEST0070 [MemberCondition] argumenty by měly být platné. Výstraha Ne
MSTEST0071 Testovací metoda by neměla zadávat zobrazovaný název, který se rovná jeho názvu. Informace Ano

* Eskalováno na chybu v režimu Recommended a All.

Obvyklé scénáře

Ověření struktury testu

Ujistěte se, že vaše testovací třídy, metody a zařízení splňují požadavky MSTest:

  • MSTEST0002: Požadavky na rozložení testovací třídy (například veřejné, nestatické).
  • MSTEST0003: Požadavky na rozložení testovací metody (️⚠ eskalováno na chybu).
  • MSTEST0030: Metody s metodou [TestMethod] musí být v [TestClass].
  • MSTEST0063: Ověření konstruktoru třídy test.
  • MSTEST0069: Použijte atribut [TestClass] přímo na třídu, aby ji zjišťování generované zdrojovým kódem našlo.

Metody životního cyklu

Ověřte metody inicializace a čištění:

Testování řízené daty

Ujistěte se, že se správně používají atributy dat:

Psaní lepších asercí

Pravidla pro správné a efektivní použití asercí:

  • MSTEST0017: Předejte očekávané nebo skutečné hodnoty ve správném pořadí.
  • MSTEST0023: Negujte podmínky (použijte přímo Assert.IsFalse).
  • MSTEST0026: Vyhněte se podmíněným operátorům null v asercích.
  • MSTEST0032: Zkontrolujte podmínky, které jsou vždy pravdivé.
  • MSTEST0037: Použijte nejvhodnější metodu assert.
  • MSTEST0038: Nepoužívejte AreSame s typy hodnot.
  • MSTEST0039: Použijte Assert.ThrowsExactly (novější rozhraní API).
  • MSTEST0046: Upřednostněte assert před StringAssert.
  • MSTEST0051: Assert.Throws by měl testovat jeden příkaz.
  • MSTEST0053: Místo parametrů formátu použijte interpolaci řetězců.
  • MSTEST0058: Neukládejte kontrolní výrazy do bloků catch.
  • MSTEST0064: Upřednostněte asynchronní ověřovací metody před blokováním při práci s asynchronním kódem.
  • MSTEST0065: Nepoužívejte Assert.AreEqual u typů kolekcí.
  • MSTEST0068: Raději Assert než CollectionAssert.

Použití TestContext

Správné použití objektu TestContext:

  • MSTEST0005: Ověření vlastnosti TestContext
  • MSTEST0024: Neukládejte TestContext do statických polí.
  • MSTEST0048: Omezený přístup k majetku v zařízeních.
  • MSTEST0049: Tokeny pro zrušení procesu z TestContext.
  • MSTEST0054: Použijte vlastnost TestContext.CancellationToken.

Asynchronní vzory

Pravidla pro asynchronní testovací kód:

  • MSTEST0040: Vyhněte se asertům v metodách void typu asynchronní.
  • MSTEST0067: Vyhněte se Thread.Sleep, Task.Wait a dalším synchronně blokujícím voláním v testovacím kódu (opt-in).

Testovací konfigurace

  • MSTEST0031: Použijte správné atributy (nikoli System.ComponentModel.Description).
  • MSTEST0035: Použití DeploymentItem.
  • MSTEST0041: Atributy podmínky musí být v testovacích třídách.
  • MSTEST0043: Atributy opakování musí být u testovacích metod (⚠️ eskalováno na chybu).
  • MSTEST0055: Neignorujte návratové hodnoty řetězcové metody.
  • MSTEST0056: Nastavte vlastnost DisplayName správně na testMethodAttribute.
  • MSTEST0057: Šíření zdrojových informací ve vlastním atributu TestMethodAttribute
  • MSTEST0059: Nepoužívejte paralelizaci ani DoNotParallelize.
  • MSTEST0060: Vyhněte se duplicitnímu atributu TestMethodAttribute.
  • MSTEST0061: Pro kontroly platformy použijte atribut OSCondition.
  • MSTEST0070: [MemberCondition] Argumenty musí odkazovat na platné členy.
  • MSTEST0071: Nenastavujte zobrazovaný název, který se rovná názvu testovací metody.