Konfigurace a používání Live Unit Testing

Při vývoji aplikace live Unit Testing automaticky spustí všechny ovlivněné testy jednotek na pozadí a zobrazí výsledky a pokrytí kódu v reálném čase. Při úpravě kódu poskytuje Live Unit Testing zpětnou vazbu k tomu, jak vaše změny ovlivnily stávající testy a jestli je nový kód, který jste přidali, pokryt jedním nebo více existujícími testy. Tato zpětná vazba vám připomene, že při opravách chyb píšete testy jednotek nebo přidáváte nové funkce.

Pokud pro testy používáte Live Unit Testing, uchovávají data o stavu testů. Použití trvalých dat umožňuje live Unit Testing nabídnout vynikající výkon při dynamickém spouštění testů v reakci na změny kódu.

Live Unit Testing je k dispozici pouze v edici Enterprise sady Visual Studio pro projekty, které cílí na .NET Core nebo .NET Framework.

Podporované testovací architektury

Live Unit Testing funguje se třemi oblíbenými architekturami testování jednotek uvedenými v následující tabulce. Zobrazuje se také minimální podporovaná verze adaptérů a architektur. Všechny architektury testování jednotek jsou dostupné z NuGet.org.

Testovací architektura Minimální verze adaptéru sady Visual Studio Minimální verze architektury
xUnit.net xunit.runner.visualstudio verze 2.2.0-beta3-build1187 xunit 1.9.2
NUnit NUnit3TestAdapter verze 3.5.1 NUnit verze 3.5.0
MSTest MSTest.TestAdapter 1.1.4-preview MSTest.TestFramework 1.0.5-preview

Pokud máte starší projekty testů založené na MSTest, které odkazují na Microsoft.VisualStudio.QualityTools.UnitTestFramework a nechcete přejít na novější balíčky MSTest NuGet, upgradujte na Visual Studio 2019 nebo Visual Studio 2017.

V některých případech možná budete muset explicitně obnovit balíčky NuGet odkazované projektem pro Live Unit Testing, aby fungovaly. K dispozici jsou dvě možnosti:

  • Obnovení provádíte explicitní sestavení řešení. V nabídce sady Visual Studio nejvyšší úrovně vyberte Sestavit>řešení znovu sestavit.
  • Obnovte balíčky v řešení. Klikněte pravým tlačítkem na řešení a vyberte Obnovit balíčky NuGet.

Konfigurovat

Při prvním spuštění Live Unit Testing pro řešení vám průvodce nastavením umožní nakonfigurovat způsob, jakým by živé testování částí mělo sestavovat a spouštět testy.

Pokud je živé testování jednotek zastaveno, můžete také otevřít průvodce nastavením tak, že přejdete do části Test>Live Unit Testing Configure Live Unit Testing>for solution.

Při spuštění Live Unit Testing vytvoří pracovní prostor, což je kopie původního úložiště. Live Unit Testing pak použije všechny neuložené změny, které jste v sadě Visual Studio provedli v pracovním prostoru, provede sestavení, provede testovací běh a hlásí nejnovější pokrytí kódu.

První věc, kterou byste měli nakonfigurovat pomocí průvodce, je místo, odkud se mají soubory zkopírovat a kam se mají zkopírovat.

Snímek obrazovky znázorňující průvodce konfigurací Live Unit Testing na stránce 1

Kořenový adresář úložiště

Kořenový adresář úložiště určuje složku, která se zkopíruje a vytvoří pracovní prostor Live Unit Testing. Měla by to být kořenová složka úložiště, to znamená, že by měla obsahovat všechny zdroje, binární soubory a nástroje. V případech, kdy soubor řešení není v kořenovém adresáři úložiště, může být potřeba změnit kořen úložiště.

Kořen pracovního prostoru

Kořenový adresář pracovního prostoru určuje složku, ve které Live Unit Testing uchovává klon úložiště. Dávejte pozor na výjimky, které značí, že cesta je příliš dlouhá. Ve výchozím nastavení se kořen vytvoří ve vaší domovské složce. Pokud ale obvykle potřebujete vytvořit úložiště pod jednotkou C, kořen pracovního prostoru se dá upravit na něco jako C:\lut\Repo.

Určení vyloučených souborů

Ne všechny soubory by se měly zkopírovat do pracovního prostoru Live Unit Testing. Všechny artefakty, které jsou generovány během sestavení, by měly být vyloučeny z kopírování, aby běžná sestavení nenarušovala sestavení Live Unit Testing. nuget restore Běžný příkaz by také neměl kolidovat s příkazem Live Unit Testingnuget restore.

Live Unit Testing ve výchozím nastavení vyloučí jeden ze dvou vzorů souborů:

  • V případě úložišť Git se soubory zadané v souboru Gitignore nekopírují do pracovního prostoru Live Unit Testing.
  • V případě úložišť mimo Git se základní seznam složek, jako jsou bin/ a obj/, nekopírují do pracovního prostoru Live Unit Testing.

U složitějších úložišť možná budete muset zadat vlastní ignorovaný soubor. V průvodci< vyberte možnost Vlastní>. Po výběru možnosti Další se zobrazí obsah vlastního souboru ignorování, který Live Unit Testing vytvoří po dokončení průvodce. Je to soubor lutignore .

Poznámka:

Pro některá úložiště Git je potřeba vlastní soubor lutignore , protože je možné zkontrolovat soubory v úložišti Git, které jsou také ignorovány souborem gitignore . Bez vlastního souboru lutignore live Unit Testing tyto soubory nekopíruje, což může vést k selhání sestavení.

Struktura souborů Lutignore

Soubor lutignore používá stejný formát jako soubor Gitignore . Měla by obsahovat pravidla, která odpovídají složkám nebo souborům vygenerovaným během sestavení, aby se nekopírovaly do pracovního prostoru. U většiny výchozích šablon projektů stačí následující ignorovaný soubor:

[BB]IN
[OO]BJ
# WILL NOT COPY ANY BIN AND OBJ FOLDERS TO THE LIVE UNIT TESTING WORKSPACE

Pokud má vaše úložiště jednu složku sestavení, měl by soubor ignorovat místo toho tuto složku:

[AA]RTIFACTS/
# WILL NOT COPY THE ARTIFACTS FOLDER TO THE LIVE UNIT TESTING WORKSPACE

Pokud vaše úložiště obsahuje některé další nástroje ve složce sestavení, měly by být tyto nástroje vyloučeny v sadě shodných vzorů:

[AA]RTIFACTS/
![AA]RTIFACTS/TOOLS/
# WILL NOT COPY THE ARTIFACTS FOLDER TO THE LIVE UNIT TESTING WORKSPACE
# HOWEVER IT WILL COPY THE TOOLS SUBFOLDER THAT MIGHT CONTAIN TOOLS AND UTILITIES

Možnosti sestavení

Druhá část stránky konfigurace průvodce je místo, kde konfigurujete možnosti sestavení:

  • Generování souborů PDB: Pokud chcete zrychlit sestavení, Live Unit Testing během sestavení nevygeneruje soubory PDB. Tyto soubory symbolů umožňují přejít na trasování zásobníku, když dojde k selhání testu.
  • Sestavení pomocí více jader procesoru: Live Unit Testing ve výchozím nastavení provádí sestavení pomocí více jader procesoru, což zlepšuje dobu sestavení. Pokud se váš počítač zpomalí nebo pokud se vám nepodaří sestavit řešení pomocí více procesorů, tuto možnost nevybírejte.

Možnosti testovacího spuštění

Poslední část stránky konfigurace průvodce je místo, kde jste nastavili možnosti testovacího spuštění:

  • Časový limit testovacího případu: Spuštění některých testů může trvat delší dobu. Nastavení tohoto pole se automaticky přeruší, pokud některý z testů překročí určitou dobu trvání. Testy je možné automaticky zrušit.
  • Použití více procesorů: Ve výchozím nastavení se Live Unit Testing pokusí použít více procesorů k urychlení výkonu spuštění. Pokud se počítač zpomalí nebo pokud vaše řešení nemůže paralelně spouštět testy, nevybírejte tuto možnost. K těmto scénářům může dojít například v případě, že se více testů pokusí zapisovat nebo číst ze stejných cest k souborům.

Další konfigurace

Live Unit Testing nakonfigurujte tak, že v řádku nabídek sady Visual Studio nejvyšší úrovně vyberete Možnosti nástrojů>. V levém podokně dialogového okna Možnosti vyberte Live Unit Testing.

Po povolení funkce Live Unit Testing (viz start, pozastavení a zastavení živého testování částí) můžete také otevřít dialogové okno Možnosti výběrem možnosti testování>živého testování>částí.

Následující obrázek ukazuje možnosti konfigurace Live Unit Testing dostupné v dialogovém okně.

Snímek obrazovky znázorňující možnosti konfigurace Live Unit Testing

Mezi konfigurovatelné možnosti patří:

  • Určuje, jestli live Unit Testing pozastaví, když je řešení sestavené a laděné.

  • Zda Live Unit Testing pozastaví, když baterie systému klesne pod zadanou prahovou hodnotu.

  • Možnost odstranit všechna trvalá data. Tato funkce je užitečná, když živé testování částí pracuje nepředvídatelným nebo neočekávaným způsobem, což naznačuje, že trvalá data jsou poškozená.

  • Maximální množství paměti, kterou mohou využívat procesy Live Unit Testing.

  • Úroveň informací zapsaných do okna Výstup live Unit Testing.

    Mezi možnosti patří žádné protokolování (Žádné), pouze chybové zprávy (Chyba), chybové a informační zprávy (Informace, výchozí) nebo všechny podrobnosti (Podrobné).

    Podrobný výstup můžete také zobrazit v okně Výstup živého testování jednotek přiřazením hodnoty 1 k proměnné prostředí na úrovni uživatele s názvem VS_UTE_DIAGNOSTICS. Potom restartujte Visual Studio.

    Chcete-li zachytit podrobné zprávy protokolu MSBuild z Live Unit Testing v souboru, nastavte LiveUnitTesting_BuildLog proměnnou prostředí na úrovni uživatele na název souboru, který bude obsahovat protokol.

Přizpůsobení sestavení pro Live Unit Testing

V případě složitějších řešení může být nutné sestavení dále přizpůsobit. Například nemusí být nutné vytvářet soubory překladu během testovacích běhů. Chcete-li urychlit sestavení, můžete zakázat sestavení souboru překladu pomocí Live Unit Testing. Můžete to udělat tak, že budete manipulovat se soubory projektu.

Přidání přepsání Live Unit Testing

Pokud vaše řešení vyžaduje vlastní kroky sestavení pro instrumentaci (Live Unit Testing), které nejsou vyžadovány pro "běžné" neinstrumentované sestavení, můžete do projektu nebo souborů .targets přidat kód, který kontroluje BuildingForLiveUnitTesting vlastnost a provádí vlastní kroky před sestavením.

Můžete například napsat následující ukázku pro přidání dalšího cíle, který se spustí pouze pro Live Unit Testing:

<Target Name="GenerateNuGetPackages" BeforeTargets="AfterBuild" Condition="'$(BuildingForLiveUnitTesting)' == 'true'">
    <Exec Command='"$(MSBuildThisFileDirectory)..\tools\GenPac" '/>
</Target>

Vlastnost můžete použít BuildingForLiveUnitTesting k zakázání některých úloh, které by se neměly spouštět pro testovací sestavení. Například Live Unit Testing sady pro <RunAnalyzers>false</RunAnalyzers> zakázání analyzátorů pro testy.

Živé závislosti testů testování částí

Je možné, že se nezkopírovaly všechny soubory, které jsou potřeba ke spuštění testů. Live Unit Testing vytvoří samostatnou složku, ve které spouští testy. Toto uspořádání umožňuje sestavení během spuštění testů, ale ne všechny soubory ze složky sestavení se zkopírují do testovací složky.

Obvykle přidáte závislosti testů z jednoho ze dvou důvodů:

  • Testy závisí na souborech ve zdrojovém stromu. Testy například prověřují obsah souborů resx nebo možná čtou některé konfigurační soubory.
  • Testy závisí na některých knihovnách, na které odkazují. Například test spustí spustitelný soubor vytvořený jako závislost.

Poznámka:

V adresáři určeném jako kořen úložiště v průvodci instalací musí existovat závislosti testů.

V obou případech Live Unit Testing ve výchozím nastavení tyto soubory nekopíruje za účelem minimalizace počtu souborů, které je potřeba zkopírovat ke spuštění testu. Tyto soubory musíte explicitně zadat pomocí LiveUnitTestingTestDependency vlastnosti, pokud jsou potřeba pro testovací běh. Řekněme například, že máme následující rozložení:

SRC/
  CONSOLE_UTILITY/
  TEST_PROJECT/
ARTIFACTS/
  CONSOLE_UTILITY/NET472/DEBUG/
  TEST_PROJECT/NET472/DEBUG/

Ve výchozím nastavení se při sestavování těchto projektů pomocí Live Unit Testing zkopíruje Artifacts/Test_Project pouze do testovací složky. Chcete-li přidat zdroje nebo console_utility do testovací složky, přidejte následující ukázku do test_project.csproj:

<LiveUnitTestingTestDependency Include=”$(RepoRoot)/Src/ConsoleUtility” />
<LiveUnitTestingTestDependency Include=”$(RepoRoot)/Artifacts/ConsoleUtility/net472/$(Configuration)/</LiveUnitTestingTestDependency” />

Spuštění, pozastavení a zastavení

Pokud chcete funkci Live Unit Testing povolit, vyberte Možnost Test>Live Unit Testing>Start v nabídce sady Visual Studio nejvyšší úrovně. Pokud je funkce Live Unit Testing povolená, možnosti dostupné v nabídce Live Unit Testing se změní z jedné položky, startu a pozastavení a zastavení:

  • Pozastavením dočasně pozastavíte Live Unit Testing.

    Když je živé testování částí pozastavené, vizualizace pokrytí se v editoru nezobrazí, ale všechna shromážděná data se zachovají. Pokud chcete pokračovat v živém testování jednotek, vyberte Pokračovat v nabídce Live Unit Testing . Live Unit Testing provede potřebnou práci k zachycení všech úprav provedených během pozastavení a odpovídajícím způsobem aktualizuje glyfy.

  • Zastavte úplné zastavení Live Unit Testing. Live Unit Testing zahodí všechna shromážděná data.

Pokud spustíte Live Unit Testing v řešení, které neobsahuje projekt testování jednotek, zobrazí se možnosti Pozastavení a zastavení v nabídce Live Unit Testing , ale Live Unit Testing se nespustí. V okně Výstup se zobrazí zpráva, že na toto řešení se odkazuje bez podporovaných testovacích adaptérů....

Kdykoli můžete dočasně pozastavit nebo úplně zastavit Live Unit Testing. Tyto akce můžete například provést, pokud jste uprostřed refaktoringu a víte, že testy budou nějakou dobu přerušené.

Zahrnutí a vyloučení testovacích projektů a testovacích metod

Když spustíte Live Unit Testing, zobrazí se okno nástroje Live Unit Testing a zobrazí se výzva k výběru sady testů, které chcete testovat pomocí funkce Live Unit Testing.

Snímek obrazovky znázorňující okno nástroje zobrazené při prvním spuštění Live Unit Testing

V případě menších řešení, ve kterých testy jednotek zabírají velmi málo času, vyberte Zahrnout všechny testy, takže Live Unit Testing spustí všechny testy.

U větších řešení s mnoha testovacími projekty můžete určit, které projekty a jednotlivé metody v projektu se účastní živého testování částí úpravou seznamu stop. Pokud máte například řešení se stovkami testovacích projektů, můžete vybrat cílovou sadu testovacích projektů, které se budou účastnit živého testování jednotek.

Můžete zvolit, jaké funkce Live Unit Testing by měla běžet úpravou seznamu testů Live Unit Testing, což je funkce, která funguje stejně jako seznamy stop v Průzkumníku testů.

Seznam stop Live Unit Testing můžete upravit několika způsoby:

  • Live Unit Testing tool window
  • Okno editoru kódu
  • Průzkumník řešení
  • Programově v testovacím kódu

Live Unit Testing uloží stav zahrnutí/vyloučení jako nastavení uživatele a zapamatuje si ho při zavření a opětovném otevření řešení.

Live Unit Testing tool window

Editor seznamů stop pro kartu Live Unit Testing můžete použít k zahrnutí nebo vyloučení projektů, oborů názvů nebo tříd ze spuštění. V okně nástroje vyberte Upravit seznam stop .

Pokud chcete zahrnout nebo vyloučit testy, můžete vybrat nebo vymazat prvky stromového zobrazení. Pokud například zkontrolujete jeden test, Live Unit Testing ho spustí na změnách. Pokud vyberete třídu, spustí se také všechny testy v této třídě a všechny nové testy přidané do této třídy.

Snímek obrazovky s editorem seznamu stop live Unit Testing

Okno editoru kódu

Pomocí okna editoru kódu můžete zahrnout nebo vyloučit jednotlivé testovací metody. Klikněte pravým tlačítkem myši na podpis nebo text testovací metody v okně editoru kódu a vyberte jednu z následujících možností:

  • Live Unit Testing>Include <selected method>
  • Vyloučení vybrané metody Live Unit Testing><>
  • Live Unit Testing>Exclude All But <selected method>

Průzkumník řešení

Pokud chcete vybrat jednotlivé projekty v testech jednotek, postupujte po spuštění živého testování částí takto:

  1. Klikněte pravým tlačítkem na řešení v Průzkumník řešení a výběrem možnosti Live Unit Testing>Vyloučit vyloučíte celé řešení.
  2. Pravým tlačítkem myši klikněte na každý testovací projekt, který chcete zahrnout do testů, a vyberte Live Unit Testing>Include.

Programově v testovacím kódu

Atribut můžete použít ExcludeFromCodeCoverageAttribute k programovému vyloučení metod, tříd nebo struktur z hlášení jejich pokrytí v Live Unit Testing.

Pomocí následujících atributů vyloučíte jednotlivé metody z Live Unit Testing:

  • xUnit: [Trait("Category", "SkipWhenLiveUnitTesting")]
  • NUnit: [Category("SkipWhenLiveUnitTesting")]
  • MSTest: [TestCategory("SkipWhenLiveUnitTesting")]

K vyloučení celého sestavení testů z live Unit Testing použijte následující atributy:

  • xUnit: [assembly: AssemblyTrait("Category", "SkipWhenLiveUnitTesting")]
  • NUnit: [assembly: Category("SkipWhenLiveUnitTesting")]
  • MSTest: [assembly: TestCategory("SkipWhenLiveUnitTesting")]

Zobrazení vizualizace pokrytí

Po povolení funkce Live Unit Testing aktualizuje každý řádek kódu v editoru sady Visual Studio, aby ukázal, jestli je kód, který píšete, pokryt testy jednotek a jestli testy, které se týkají jeho předávání.

Následující obrázek ukazuje řádky kódu s předáváním a neúspěšnými testy a řádky kódu, které nejsou pokryty testy. Čáry se zelenou barvou "}" jsou pokryty pouze absolvováním testů. Čáry s červeným symbolem "x" jsou pokryty jedním nebo více neúspěšnými testy. Čáry s modrou "➖" nejsou pokryty žádným testem.

Snímek obrazovky znázorňující pokrytí kódu v sadě Visual Studio

Vizualizace pokrytí Live Unit Testing se okamžitě aktualizuje při úpravě kódu v editoru kódu. Při zpracování úprav se vizualizace změní tak, aby značila, že data nejsou aktuální přidáním obrázku časovače zaokrouhleného pod předaný, neúspěšný a nepokryté symboly, jak ukazuje následující obrázek.

Snímek obrazovky znázorňující pokrytí kódu v sadě Visual Studio s ikonou časovače

Získání informací o stavu testu

Když najedete myší na předaný nebo neúspěšný symbol v okně kódu, uvidíte, kolik testů se na tento řádek dostane. Pokud chcete zobrazit stav jednotlivých testů, vyberte symbol.

Snímek obrazovky znázorňující stav testu pro symbol v sadě Visual Studio

Kromě zadání názvů a výsledků testů vám popis umožní znovu spustit nebo ladit sadu testů. Pokud vyberete jeden nebo více testů v popisu, můžete také spustit nebo ladit pouze tyto testy. Tato akce umožňuje ladit testy, aniž byste museli opustit okno kódu.

Při ladění se kromě pozorování všech zarážek, které jste už možná nastavili, spuštění programu pozastaví, když ladicí program spustí metodu Assert , která vrátí neočekávaný výsledek.

Když najedete myší na neúspěšný test v popisu, rozbalí se a zobrazí se další informace o selhání, jak je znázorněno na následujícím obrázku. Pokud chcete přejít přímo na neúspěšný test, poklikejte na něj v popisu.

Snímek obrazovky znázorňující informace o neúspěšném testu v sadě Visual Studio

Když přejdete na neúspěšný test, Live Unit Testing vizuálně indikuje v podpisu metody testy, které mají:

  • Předané (označeno půlplňkou beaker spolu se zelenou barvou "}").
  • Neúspěšné (označeno napůl úplným báskem spolu s červeným textem ").🞩
  • Nezabíjejí se do Live Unit Testing (označuje to půlplňkou spolu s modrou "➖").

Netestní metody nejsou označeny symbolem. Následující obrázek znázorňuje všechny čtyři typy metod.

Snímek obrazovky znázorňující testovací metody v sadě Visual Studio s předanými nebo neúspěšnými symboly

Diagnostika a oprava selhání testů

V neúspěšném testu můžete snadno ladit kód produktu, provádět úpravy a pokračovat v vývoji aplikace. Protože live Unit Testing běží na pozadí, nemusíte během ladění, úprav a pokračování cyklu zastavit a restartovat Live Unit Testing.

Například selhání testu zobrazené na předchozím obrázku bylo způsobeno nesprávným předpokladem v testovací metodě, že nealfabetické znaky se vrátí true při předání metodě System.Char.IsLower . Jakmile opravíte testovací metodu, měly by všechny testy proběhnout. Live Unit Testing nemusíte pozastavit ani zastavit.

Live Unit Testing – okno

Live Unit Testing, podobně jako Průzkumník testů, poskytuje rozhraní, které umožňuje spouštět a ladit testy a analyzovat výsledky testů. Pokud je funkce Live Unit Testing povolená, stav testů jednotek v Průzkumníku testů se okamžitě aktualizuje. Testy jednotek nemusíte explicitně spouštět.

Pokud živé testování jednotek není povolené nebo je zastavené, Live Unit Testing zobrazí stav testů jednotek při posledním spuštění testu. Po restartování Live Unit Testing se k opětovnému spuštění testů vyžaduje změna zdrojového kódu.

Live Unit Testing můžete spustit tak, že v nabídce Sady Visual Studio nejvyšší úrovně vyberete start Test Live>Unit Testing.> Okno Live Unit Testing můžete otevřít také pomocí okna Zobrazit>jiné testování částí systému Windows>Live.

V okně Live Unit Testing si můžete všimnout, že některé testy jsou vybledlé. Když například zastavíte a restartujete Live Unit Testing, okno Live Unit Testing zmizí všechny testy, jak ukazuje následující obrázek.

Zeslabené výsledky testu naznačují, že test nebyl součástí nejnovějšího spuštění Live Unit Test. Testy se spustí pouze v případech, kdy se zjistí změna testu nebo se zjistí závislosti testu. Pokud nedojde k žádné změně, zabrání zbytečně spuštění testu. V tomto případě je výsledek testu se šedě stále "aktuální", i když nebyl součástí nejnovějšího spuštění.

Snímek obrazovky znázorňující testy zeslabené v Průzkumníku testů

Všechny testy, které se zobrazují jako vybledlé, můžete znovu spustit provedením změny kódu.

Live Unit Testing automaticky spouští a aktualizuje výsledky testů a explicitně spouští testy z Průzkumníka testů, existuje několik rozdílů. Mezi tyto rozdíly patří:

  • Spouštění nebo ladění testů z okna Průzkumníka testů spouští běžné binární soubory. Live Unit Testing spouští instrumentované binární soubory.
  • Live Unit Testing nevytvoří novou doménu aplikace pro spouštění testů. Místo toho spouští testy z výchozí domény. Testy spuštěné z okna Průzkumníka testů vytvoří novou doménu aplikace.
  • Live Unit Testing spouští testy v jednotlivých sestaveních testů postupně. V okně Průzkumníka testů můžete zvolit paralelní spouštění více testů.

Zrušení testovacích běhů Live Unit Testing

Live Unit Testing udržuje testy vždy, když provedete jakékoli změny kódu. Pokud probíhá spuštění a provádíte další změny kódu, Live Unit Testing zařadí další spuštění do fronty, zatímco čeká na dokončení prvního spuštění.

Kdykoli uložíte soubory, Live Unit Testing zruší první spuštění a okamžitě naplánuje spuštění ve frontě. Tento proces pomáhá se scénáři, kdy dokončení prvního spuštění trvalo dlouhou dobu.

Viz také