Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pravidla analýzy MSTest (MSTESTxxxx) kontrolují kód jazyka C# nebo Visual Basic pro zabezpečení, výkon, návrh a další problémy.
Návod
Pokud používáte Visual Studio, mnoho pravidel analyzátoru má přidružené opravy kódu, které můžete použít k vyřešení problému. Opravy kódu se zobrazují v nabídce ikon žárovky.
Pravidla jsou uspořádaná do kategorií, jako je využití výkonu...
Počínaje verzí MSTest.TestFramework 3.7 je balíček MSTest.Analyzers NuGet závislostí frameworku. Pro starší verze je potřeba použít MSTest metabalíč nebo přidat odkaz na balíček pro MSTest.Analyzers explicitně.
MSTestAnalysisMode
Počínaje verzí MSTest 3.8 je k dispozici vlastnost MSBuild s názvem MSTestAnalysisMode, která určuje, které analyzátory jsou povoleny v jaké závažnosti.
Návod
Pokud chcete zjistit, která pravidla jsou povolena s jakou závažností pro každý režim, můžete přejít na balíček verze zájmu v mezipaměti NuGet, vyhledat globalconfigs adresář a otevřít soubor .globalconfig odpovídající režimu analýzy.
Další informace o hledání adresáře mezipaměti NuGet najdete v tématu Správa globálních balíčků, mezipaměti a dočasných složek. V adresáři vyhledejte mstest.analyzers adresář, potom verzi (3.8 a vyšší) a pak globalconfigs.
Případně si můžete stáhnout balíček NuGet verze, která vás zajímá, z nuget.org a prohlédnout ho v Průzkumníku balíčků NuGet (aplikace pro Windows), nebo ho prohlédnout přímo ve webové verzi Průzkumníka balíčků NuGet ve verzi.
Dostupné hodnoty pro tuto vlastnost:
None
Tato hodnota nastaví všechny analyzátory na none závažnosti a zakáže je všechny. Jednotlivé analyzátory pak můžete povolit pomocí .editorconfig nebo .globalconfig souborů.
Default
Toto nastavení se řídí výchozím zdokumentovaným chováním pro každé pravidlo.
- Pravidla, která jsou ve výchozím nastavení povolená, budou používat výchozí závažnost.
- Pravidla, která jsou ve výchozím nastavení zakázaná, budou používat závažnost
none.
Poznámka
Pravidla, která jsou ve výchozím nastavení povolená jako upozornění, jsou porušení, u kterých se očekává, že způsobí problémy během běhu.
Recommended
Očekává se, že tento režim bude používat většina vývojářů. Pravidla, která mají ve výchozím nastavení povolenou závažnost Informace (suggestion), jsou eskalována na varování. Následující pravidla jsou eskalována k chybám v obou Recommended režimech All :
- MSTEST0003: Testovací metody by měly mít platné rozložení.
- MSTEST0043: Pro testovací metodu použijte atribut opakování.
All
Tento režim je agresivnější než Recommended. Všechna pravidla jsou povolená jako upozornění. Kromě toho jsou následující pravidla eskalována k chybám:
- MSTEST0003: Testovací metody by měly mít platné rozložení.
- MSTEST0043: Pro testovací metodu použijte atribut opakování.
Poznámka
Následující pravidla jsou zcela volitelná a nejsou aktivována v režimu Default, Recommendednebo All:
Pravidla podle kategorie
Pravidla analyzátoru jsou uspořádaná do následujících kategorií:
Pravidla návrhu
Pravidla návrhu pomáhají vytvářet a udržovat testovací sady, které dodržují správné postupy návrhu.
Pravidla výkonu
pravidla výkonu podporují vysoce výkonné testování.
Pravidla potlačení
Pravidla potlačení nabízejí podporu pro potlačení diagnostiky z jiných pravidel.
Pravidla použití
pravidla použití podporují správné použití MSTestu.
Pravidla podle konceptu
Najděte pravidla uspořádaná běžnými testovacími scénáři a koncepty:
Struktura testů a atributy
Pravidla, která pomáhají zajistit, aby vaše testovací třídy a metody byly správně strukturované a zdobené:
- MSTEST0002 – Testovací třída by měla být platná.
- MSTEST0003 – testovací metoda by měla být platná.
- MSTEST0004 – Veřejné typy by měly být testovací třídy
- MSTEST0007 – použití atributu pro testovací metodu
- MSTEST0016 – testovací třída by měla mít testovací metodu
- MSTEST0029 – veřejná metoda by měla být testovací metoda
- MSTEST0030 – typ obsahující testovací metodu by měl být testovací třída.
- MSTEST0036 – nepoužívejte stínování
- MSTEST0041 – Použití atributů založených na podmínce s testovací třídou
- MSTEST0044 – Preferujte TestMethod před DataTestMethod
- MSTEST0056 – TestMethodAttribute by měl správně nastavit DisplayName.
- MSTEST0057 – TestMethodAttribute by měl šířit informace o zdroji.
- MSTEST0060 – Duplicitní TestMethodAttribute
- MSTEST0063 – testovací třída by měla mít platný konstruktor.
Související dokumentace: Psaní testů pomocí MSTestu
Vzory Async/await
Pravidla pro zápis asynchronního testovacího kódu správně:
- MSTEST0013 – AssemblyCleanup by měl být platný (včetně asynchronních pravidel)
- MSTEST0027 – Potlačení přípony 'async' u testovacích metod
- MSTEST0028 – Potlačení asynchronní přípony pro metody zkušebního zařízení
- MSTEST0039 – Použití novějších metod Assert.Throws (asynchronní varianty)
- MSTEST0040 – Vyhněte se použití asercí v asynchronním kontextu void.
- MSTEST0045 – k vypršení časového limitu použijte kooperativní zrušení.
- MSTEST0049 – Tok zrušení TestContextu
- MSTEST0054 – použití vlastnosti CancellationToken
Související dokumentace: TestContext
Testování řízené daty
Pravidla pro práci se scénáři testů řízenými daty:
- MSTEST0007 – použití atributu pro testovací metodu
- MSTEST0014 – Hodnota DataRow by měla být platná.
- MSTEST0018 – DynamicData by měla být platná.
- MSTEST0042 – Duplicitní řádek dat
- MSTEST0052 – Vyhněte se explicitnímu dynamicDataSourceType
- MSTEST0062 – vyhněte se parametrům metody testování out/ref
Související dokumentace: Testování řízené daty
Životní cyklus a inicializace
Pravidla pro inicializaci testů, vyčištění a správu životního cyklu:
- MSTEST0008 – Hodnota TestInitialize by měla být platná.
- MSTEST0009 – TestCleanup by měl být platný.
- MSTEST0010 – ClassInitialize by měla být platná.
- MSTEST0011 – ClassCleanup by měla být platná.
- MSTEST0012 – AssemblyInitialize by měla být platná.
- MSTEST0013 – AssemblyCleanup by měl být platný
- MSTEST0019 – Preferujte TestInitialize před konstruktory
- MSTEST0020 – Preferujte konstruktory před TestInitialize
- MSTEST0021 – Preferujte metodu Dispose před TestCleanup
- MSTEST0022 – Preferujte testCleanup před Dispose
- MSTEST0034 – Použití třídyCleanupBehavior.EndOfClass
- MSTEST0050 - Globální zkušební zařízení by mělo být platné
Související dokumentace: Životní cyklus
Assertions
Pravidla pro správné a efektivní použití asertivních metod:
- MSTEST0006 – vyhněte se atributu ExpectedException
- MSTEST0014 – Hodnota DataRow by měla být platná.
- MSTEST0017 – argumenty tvrzení by měly být předány ve správném pořadí.
- MSTEST0023 – Nenegujte logické kontrolní výrazy
- MSTEST0025 – Preferujte Assert.Fail nad vždy-nesprávnými podmínkami
- MSTEST0026 – Argumenty kontrolních výrazů by se měly vyhnout podmíněnému přístupu
- MSTEST0032 – Zkontrolovat podmínku asertu, která je vždy pravdivá
- MSTEST0037 – použití správných metod assert
- MSTEST0038 – Vyhněte se Assert.AreSame s typy hodnot
- MSTEST0039 – použití novějších metod Assert.Throws
- MSTEST0046 – Místo StringAssert použijte assert.
- MSTEST0051 – Assert.Throws by měl obsahovat jeden příkaz.
- MSTEST0053 – Vyhněte se parametrům formátu Assert
- MSTEST0058 – Vyhněte se asertům v blocích catch
Související dokumentace: Asserty
TestContext
Pravidla pro správné použití objektu TestContext:
- MSTEST0005 – TestContext by měl být platný.
- MSTEST0024 – Neukládejte statický testContext
- MSTEST0033 – Potlačení upozornění na neinicializovaný nenullovatelný odkaz
- MSTEST0048 – použití vlastnosti TestContext
- MSTEST0049 – Tok zrušení TestContextu
- MSTEST0054 – použití vlastnosti CancellationToken
Související dokumentace: TestContext
Testovací konfigurace
Pravidla pro konfiguraci spouštění testů, paralelizace a dalších nastavení testů:
- MSTEST0001 – použití atributu Parallelize
- MSTEST0015 – testovací metoda by neměla být ignorována.
- MSTEST0031 – Nepoužívejte System.ComponentModel.DescriptionAttribute
- MSTEST0035 – použijte DeploymentItem s testovací metodou nebo testovací třídou
- MSTEST0043 – Použití atributu opakování pro testovací metodu
- MSTEST0045 – k vypršení časového limitu použijte kooperativní zrušení.
- MSTEST0055 – Neignorovat návratovou hodnotu metody řetězce
- MSTEST0059 – správné použití atributu Parallelize
- MSTEST0061 – Místo kontroly za běhu použijte atribut OSCondition.
Související dokumentace: Konfigurace MSTest, spouštění testů
Všechna pravidla (rychlá referenční dokumentace)
| ID pravidla | Kategorie | Title | Výchozí závažnost |
|---|---|---|---|
| MSTEST0001 | Performance | Použití atributu Parallelize | Informace |
| MSTEST0002 | Usage | Testovací třída by měla být platná. | Výstraha |
| MSTEST0003 | Usage | Testovací metoda by měla být platná. | Upozornění → Chyba* |
| MSTEST0004 | Design | Veřejné typy by měly být testovací třídy. | Informace |
| MSTEST0005 | Usage | TestContext by měl být platný. | Výstraha |
| MSTEST0006 | Design | Vyhněte se atributu ExpectedException | Informace |
| MSTEST0007 | Usage | Použití atributu pro testovací metodu | Výstraha |
| MSTEST0008 | Usage | TestInitialize by měl být platný. | Výstraha |
| MSTEST0009 | Usage | TestCleanup by měl být platný. | Výstraha |
| MSTEST0010 | Usage | Metoda ClassInitialize by měla být platná. | Výstraha |
| MSTEST0011 | Usage | TřídaCleanup by měla být platná. | Výstraha |
| MSTEST0012 | Usage | AssemblyInitialize by mělo být platné. | Výstraha |
| MSTEST0013 | Usage | AssemblyCleanup by měl být platný. | Výstraha |
| MSTEST0014 | Usage | DataRow by měl být platný. | Výstraha |
| MSTEST0015 | Design | Testovací metoda by neměla být ignorována. | Žádné (výslovný souhlas) |
| MSTEST0016 | Design | Testovací třída by měla mít testovací metodu. | Informace |
| MSTEST0017 | Usage | Argumenty asertací by měly být předány ve správném pořadí. | Informace |
| MSTEST0018 | Usage | DynamicData by měla být platná. | Výstraha |
| MSTEST0019 | Design | Preferovat TestInitialize před konstruktory | Žádné (výslovný souhlas) |
| MSTEST0020 | Design | Preferovat konstruktory před TestInitialize | Žádné (výslovný souhlas) |
| MSTEST0021 | Design | Preferujte Dispose před TestCleanup | Žádné (výslovný souhlas) |
| MSTEST0022 | Design | Preferujte TestCleanup před Dispose | Žádné (výslovný souhlas) |
| MSTEST0023 | Usage | Nepopírat booleovský výrok | Informace |
| MSTEST0024 | Usage | Neukládejte statickou TestContext. | Výstraha |
| MSTEST0025 | Design | Preferujte Assert.Fail před vždy-falešnými podmínkami | Informace |
| MSTEST0026 | Usage | Argumenty asercí by se měly vyhnout podmínkovému přístupu. | Informace |
| MSTEST0027 | Suppression | Potlačení přípony async u testovacích metod | N/A |
| MSTEST0028 | Suppression | Potlačení asynchronní přípony pro metody zkoušky | N/A |
| MSTEST0029 | Design | Veřejná metoda by měla být testovací metoda. | Informace |
| MSTEST0030 | Usage | Typ obsahující testovací metodu by měl být testovací třídou. | Výstraha |
| MSTEST0031 | Usage | Nepoužívejte System.ComponentModel.DescriptionAttribute | Informace |
| MSTEST0032 | Usage | Kontrola podmínky kontrolního výrazu always-true | Informace |
| MSTEST0033 | Suppression | Potlačení nenulovatelného odkazu, který není inicializován | N/A |
| MSTEST0034 | Usage | Použijte TříduCleanupBehavior.EndOfClass | Informace |
| MSTEST0035 | Usage | Použití DeploymentItem ve spojení s testovací metodou nebo testovací třídou | Informace |
| MSTEST0036 | Design | Nepoužívejte stínování | Výstraha |
| MSTEST0037 | Usage | Používejte správné assert metody | Informace |
| MSTEST0038 | Usage | Vyhněte se použití Assert.AreSame s hodnotovými typy | Informace |
| MSTEST0039 | Usage | Použití novějších metod Assert.Throws | Informace |
| MSTEST0040 | Usage | Vyhněte se používání asertů v kontextu asynchronního voidu. | Výstraha |
| MSTEST0041 | Usage | Použití atributů založených na podmínce s testovací třídou | Výstraha |
| MSTEST0042 | Usage | Duplicitní datový řádek | Výstraha |
| MSTEST0043 | Usage | Použití atributu opakování pro testovací metodu | Upozornění → Chyba* |
| MSTEST0044 | Design | Preferujte TestMethod před DataTestMethod | Informace |
| MSTEST0045 | Design | Použití kooperativního zrušení pro vypršení časového limitu | Informace |
| MSTEST0046 | Usage | Místo StringAssert použijte assert. | Informace |
| MSTEST0048 | Usage | Použití vlastnosti TestContext | Výstraha |
| MSTEST0049 | Usage | Flow TestContext CancellationToken | Informace |
| MSTEST0050 | Usage | Globální zkušební zařízení by mělo být platné. | Výstraha |
| MSTEST0051 | Usage | Assert.Throws by měl obsahovat jeden příkaz. | Informace |
| MSTEST0052 | Usage | Vyhněte se explicitnímu dynamicDataSourceType | Informace |
| MSTEST0053 | Usage | Vyhněte se parametrům formátu Assert | Informace |
| MSTEST0054 | Usage | Použití vlastnosti CancellationToken | Informace |
| MSTEST0055 | Usage | Nepřehlížejte návratovou hodnotu řetězcové metody. | Výstraha |
| MSTEST0056 | Usage | TestMethodAttribute by měl správně nastavit DisplayName. | Informace |
| MSTEST0057 | Usage | TestMethodAttribute by měl šířit informace o zdroji. | Výstraha |
| MSTEST0058 | Usage | Vyhněte se asercím v blocích catch | Informace |
| MSTEST0059 | Usage | Správné použití atributu Parallelize | Výstraha |
| MSTEST0060 | Usage | Duplicitní TestMethodAttribute | Výstraha |
| MSTEST0061 | Usage | Použití atributu OSCondition místo kontroly za běhu | Informace |
| MSTEST0062 | Usage | Vyhněte se parametrům metody testu out/ref | Výstraha |
| MSTEST0063 | Usage | Testovací třída by měla mít platný konstruktor. | Výstraha |
* Eskalováno na chybu v režimu Recommended a All.
Nástroj MSTESTEXP
Několik rozhraní API MSTest je zdobeno ExperimentalAttribute. Tento atribut označuje, že rozhraní API je experimentální a může být odebráno nebo změněno v budoucích verzích MSTest. Tento atribut slouží k identifikaci rozhraní API, která ještě nejsou stabilní a nemusí být vhodná pro produkční použití.
Diagnostická výstraha MSTESTEXP vás upozorní na používání experimentálního rozhraní API ve vašem kódu. Pokud chcete tuto diagnostiku potlačit pomocí SuppressMessageAttribute, přidejte do projektu následující kód:
using System.Diagnostics.CodeAnalysis;
[assembly: SuppressMessage("MSTESTEXP", "Justification")]
Alternativně můžete tuto diagnostiku potlačit direktivou preprocesoru přidáním následujícího kódu do projektu:
#pragma warning disable MSTESTEXP
// API that is causing the warning.
#pragma warning restore MSTESTEXP