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.
VSTest.Console.exe je nástroj příkazového řádku pro spouštění testů. Na příkazovém řádku můžete zadat několik možností v libovolném pořadí. Tyto možnosti jsou uvedeny v Obecné možnosti příkazového řádku.
Poznámka
Adaptér MSTest v sadě Visual Studio funguje také v zastaralém režimu (ekvivalentní spouštění testů s mstest.exe) kvůli kompatibilitě. Ve starším režimu nemůže využít funkci TestCaseFilter. Adaptér se může přepnout do staršího režimu, když je zadán testsettings soubor, forcelegacymode je nastaven na true v runsettings souboru, nebo pomocí atributů, jako je HostType.
Pokud chcete spustit automatizované testy na počítači založeném na architektuře ARM, musíte použít VSTest.Console.exe.
Otevřete vývojářský příkazový řádek použít nástroj příkazového řádku nebo nástroj najdete v %Program Files(x86)%\Microsoft Visual Studio\<verzi>\<edition>\common7\ide\CommonExtensions\<Platform | Microsoft>.
Obecné možnosti příkazového řádku
Následující tabulka uvádí běžně používané možnosti proVSTest.Console.exe a krátké popisy. Podobný souhrn můžete zobrazit zadáním VSTest.Console/? na příkazovém řádku. Kompletní referenční informace, včetně interních a starších přepínačů, které tu nejsou uvedené, najdete v tématuvstest.console.exe možnostech příkazového řádku a výslovně vynechaných přepínačů v úložišti vstest.
| Možnost | Popis |
|---|---|
| [názvy testovacích souborů] | Spusťte testy ze zadaných souborů. Oddělte několik názvů testovacích souborů mezerami. Příklady: mytestproject.dll, mytestproject.dll myothertestproject.exe |
| /Settings:[název souboru] | Spusťte testy s dalšími nastaveními, jako jsou kolektory dat. Další informace najdete v tématu Konfigurace testů jednotek pomocí souboru .runsettings Příklad: /Settings:local.runsettings |
| /Tests:[název testu] | Spusťte testy s názvy, které obsahují zadané hodnoty. Tento příkaz odpovídá úplnému názvu testu, včetně oboru názvů. Pokud chcete zadat více hodnot, oddělte je čárkami. Příklad: /Tests:TestMethod1,testMethod2Možnost příkazového řádku /Tests nelze použít s možností příkazového řádku /TestCaseFilter . |
| /Parallel | Určuje, že testy se provádějí paralelně. Ve výchozím nastavení je možné použít až všechna dostupná jádra na počítači. Můžete nakonfigurovat počet jader, která se mají použít v souboru nastavení. |
| /Inisolation | Spustí testy v izolovaném procesu. Díky této izolaci se proces vstest.console.exe méně pravděpodobně zastaví na chybě v testech, ale testy můžou běžet pomaleji. |
| /TestAdapterPath:[ cestacesta] | Vynutí proces vstest.console.exe použití vlastních testovacích adaptérů ze zadané cesty (pokud existuje) v testovacím spuštění. Příklad: /TestAdapterPath:[pathToCustomAdapters] |
| /Platform:[typ platformy] | Vynutí použití dané architektury platformy místo platformy určené z aktuálního modulu runtime. Hodnoty nerozlišují malá a velká písmena; přijaté hodnoty jsou x86, , x64, ARMARM64Ppc64leS390x, RiscV64, a .LoongArch64Na Windows lze spolehlivě vynutit pouze x86 a x64; určení ARM výsledků v x64 ve většině systémů. Tuto možnost nezadávejte pro spuštění v modulu runtime, který není v seznamu platných hodnot. |
| /Framework: [verze] | Cílová verze .NET, která se má použít k provedení testu. Moderní krátké formuláře architektury jsou přijímány a analyzovány analyzátorem architektury NuGet, například net48, net6.0nebo net10.0 (a také dlouhé formuláře, jako .NETFramework,Version=v4.8 je a .NETCoreApp,Version=v10.0).Starší aliasy Framework35, Framework40, Framework45, FrameworkCore10a FrameworkUap10 jsou také přijímány.TargetFrameworkAttribute slouží k automatickému rozpoznání této možnosti ze sestavení a výchozí hodnota Framework40 je, když atribut není k dispozici. Tuto možnost musíte explicitně zadat, pokud odeberete TargetFrameworkAttribute ze sestavení .NET Core.Pokud je cílová architektura zadána jako Framework35, testy se spustí v CLR 4.0 "režim kompatibility". Příklad: /Framework:net8.0 |
| /TestCaseFilter:[ výraz] | Spusťte testy, které odpovídají danému výrazu. < > výrazu je vlastnost <formátu>=<hodnota>[|<Výraz>]. Příklad: /TestCaseFilter:"Priority=1"Příklad: /TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName"Možnost příkazového řádku /TestCaseFilter nelze použít s možností příkazového řádku /Tests . Informace o vytvářeníach ch Když zadáte filtr přímo v prostředí, podívejte se na řídicí filtr výrazy v prostředí. |
| /Environment:[NAME]=[HODNOTA] | Nastaví hodnotu proměnné prostředí pro proces testovacího hostitele. Vytvoří proměnnou, pokud neexistuje, a pokud ano, přepíše ji. Tato možnost znamená /InIsolation a vynutí, aby se testy spouštěly v izolovaném procesu. Zadejte možnost vícekrát, pokud chcete nastavit více proměnných. Krátká forma: /e. Příklad: /e:VARIABLE1=VALUE1 |
| /? | Zobrazí informace o využití. |
| /Logger:[identifikátor URI/friendlyname] | Zadejte protokolovací nástroje pro výsledky testů. Pokud chcete povolit více protokolovacích souborů, zadejte parametr vícekrát. Příklad: Pokud chcete výsledky přihlásit do souboru výsledků testů sady Visual Studio (TRX), použijte /Logger:trx [; LogFileName=<Defaults to unique file name>] LogFileName Místo LogFilePrefix=<prefix> toho, abyste při každém spuštění zachovali samostatný soubor s časovým razítkem.
LogFileName nastaví explicitní název a přepíše předchozí soubor, zatímco LogFilePrefix ne.Další informace najdete v příkladu protokolování. |
| /ListTests:[ název souboru] | Zobrazí seznam zjištěných testů z daného testovacího kontejneru. Krátká forma: /lt. Poznámka: Možnost /TestCaseFilter nemá žádný vliv při výpisu testů; řídí pouze to, které testy se spustí. |
| /Blame | Spustí testy v režimu blame. Tato možnost je užitečná při izolování problematických testů, které způsobují chybové ukončení hostitele testu. Když dojde k chybě, vytvoří se v TestResults/<Guid>/<Guid>_Sequence.xml sekvenční soubor, který zachycuje pořadí testů, které byly spuštěny před chybovým ukončením.Můžete také shromáždit výpis stavu systému nebo zablokování systému, například /Blame:CollectDump;DumpType=full/Blame:CollectHangDump;TestTimeout=90m;HangDumpType=mini. Ekvivalentní dotnet test přepínače jsou --blame-crash a --blame-hang.Úplný matici možností a požadavky na shromažďování výpisů paměti najdete v tématu Kolektor dat Blame. |
| /Diag:[ název souboru] | Zapíše do zadaného souboru protokoly trasování diagnostiky. Nastavte úroveň trasování ( /Diag:<file name>;tracelevel=<off\|error\|warning\|info\|verbose> výchozí hodnota je verbose). |
| /ResultsDirectory:[cesta] | Pokud adresář výsledků testů neexistuje, vytvoří se v zadané cestě. Příklad: /ResultsDirectory:<pathToResultsDirectory> |
| /ParentProcessId:[parentProcessId] | ID procesu nadřazeného procesu zodpovědného za spuštění aktuálního procesu. |
| /Port:[port] | Port pro připojení soketu a příjem zpráv událostí. |
| /Collect:[dataCollector friendlyName] | Povolí kolektor dat pro testovací běh. Další informace. |
| @[soubor] | Přečte další možnosti ze zadaného souboru odpovědi. Argumenty v souboru jsou oddělené prázdnými znaky (mezerami nebo novými řádky) a podporují se uvozovky, takže možnosti můžou přesahovat více řádků. Příklad: vstest.console.exe @options.rsp |
Spropitné
U možností a hodnot se nerozlišuje malá a velká písmena.
Příklady
Syntaxe spuštění vstest.console.exe je:
vstest.console.exe [TestFileNames] [Options]
Ve výchozím nastavení příkaz vrátí hodnotu 0, když se normálně ukončí, i když nejsou zjištěny žádné testy. Pokud chcete vrátit nenulovou hodnotu, pokud nejsou zjištěny žádné testy, použijte možnost <TreatNoTestsAsError>true</TreatNoTestsAsError> runsettings.
Následující příkaz spustí vstest.console.exe pro myTestProject.dlltestovací knihovny:
vstest.console.exe myTestProject.dll
Následující příkaz spustí vstest.console.exe s více testovacími soubory. Názvy testovacích souborů oddělte mezerami:
vstest.console.exe myTestFile.dll myOtherTestFile.dll
Následující příkaz spustí vstest.console.exe s několika možnostmi. Spouští testy v souboru myTestFile.dll v izolovaném procesu a používá nastavení zadaná v souboru Local.RunSettings. Kromě toho spustí testy označené jako Priority=1 a výsledky zaprotokoluje do souboru .trx.
vstest.console.exe myTestFile.dll /Settings:Local.RunSettings /InIsolation /TestCaseFilter:"Priority=1" /Logger:trx
Následující příkaz spustí vstest.console.exe s možností /blame pro myTestProject.dlltestovací knihovny:
vstest.console.exe myTestFile.dll /blame
Pokud dojde k chybovému ukončení testovacího hostitele, vygeneruje se soubor sequence.xml. Soubor obsahuje plně kvalifikované názvy testů v jejich sekvenci provádění až do konkrétního testu, který byl spuštěn v době chybového ukončení.
Pokud nedojde k chybě testovacího hostitele, soubor sequence.xml se negeneruje.
Příklad vygenerovaného souboru sequence.xml:
<?xml version="1.0"?>
<TestSequence>
<Test Name="TestProject.UnitTest1.TestMethodB" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
<Test Name="TestProject.UnitTest1.TestMethodA" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
</TestSequence>
V tomto případě <Test Name> je poslední test spuštěný v době chybového ukončení.
Ukončovací kódy
vstest.console.exe vrátí jeden ze dvou ukončovacích kódů:
| Code | Význam |
|---|---|
0 |
Akce byla úspěšná. Požadovaná operace byla dokončena a pro testovací běh byly úspěšně provedeny všechny testy. |
1 |
Selhání. Například jeden nebo více testů selhalo, byla hlášena chyba spuštění, příkazový řádek byl neplatný nebo chybí, nelze načíst zdroj testu nebo se spuštění přerušilo nebo zrušilo. |
Proces nikdy nevrátí žádnou jinou hodnotu. Při spuštění testů dotnet test.NET SDK zobrazí nenulový ukončovací kód, když spuštění selže stejným způsobem.
Když zjišťování nenajde žádné odpovídající testy, spouštěč vytiskne upozornění místo chyby a ve výchozím nastavení se stále vrátí 0. Pokud chcete provést spuštění, které místo toho zjistí nebo vybere nulové testy, 1 nastavte <TreatNoTestsAsError>true</TreatNoTestsAsError> v elementu RunConfiguration vašeho souboru .runsettings . Další informace naleznete v tématu Konfigurace testů jednotek pomocí souboru .runsettings.
Řídicí filtr výrazy v prostředí
Výraz /TestCaseFilter je parsován prostředím i testovací platformou, takže některé znaky potřebují před tím, než jevstest.console.exe obdrží, escaping specifický pro prostředí. Uvozování celého výrazu, jako v příkladech výše v tomto článku, zabraňuje většině problémů. Následující případy vyžadují zvláštní péči:
PowerShell: Čárka (
,) je operátor pole a středník (;) je oddělovač příkazů. Uvozujte celý výraz filtru, aby byl předán doslova, například/TestCaseFilter:"FullyQualifiedName=MyNamespace.MyClass.MyMethod".Bash a zsh (Linux a macOS): Řídicí znak
!se zpětným lomítkem při použití operátoru!~(neobsahuje) například--filter FullyQualifiedName\!~IntegrationTestssdotnet test. Také hodnoty uvozovek, které obsahují znaky se zvláštním významem prostředí, například<,>nebo,v seznamu argumentů obecného typu:dotnet test --filter "FullyQualifiedName=MyNamespace.MyClass<Type1,Type2>.MyMethod"
Úplný odkaz na filtrování a podporované vlastnosti pro každou testovací architekturu naleznete v tématu TestCase filter.
Příklad protokolování
Každý protokolovací objekt definuje vlastní parametry. Na rozdíl od trx umožňuje protokolovací nástroj konzoly nastavit úroveň podrobností. Další informace potřebujete zadat VSTest.Console/? na příkazovém řádku.
Tady je příklad pro protokolovací nástroj konzoly:
vstest.console.exe myTestFile.dll /logger:console;verbosity=detailed
Mezi podporované úrovně podrobností patří tiché, minimální, normální a podrobné.
V PowerShellu musíte použít uvozovky:
vstest.console.exe myTestFile.dll /logger:"console;verbosity=detailed"
Úplný seznam dostupných protokolovačů a pokyny pro vytváření vlastního protokolovacího nástroje najdete v tématu Vytváření výsledků testů v úložišti vstest.
Příklad UPW
Pro UPW musí být soubor appxrecipe odkazován místo knihovny DLL.
vstest.console.exe /Logger:trx /Platform:x64 /framework:frameworkuap10 UnitTestsUWP\bin\x64\Release\UnitTestsUWP.build.appxrecipe
Proměnné prostředí
Testovací platforma rozpozná několik proměnných prostředí. Následují nejužitečnější při spouštění testů z příkazového řádku. Úplný seznam najdete v tématu Proměnné prostředí srozumitelné testovací platformě v úložišti vstest.
| Variable | Popis |
|---|---|
VSTEST_CONNECTION_TIMEOUT |
Časový limit v sekundách pro navázání připojení mezi komponentami testovací platformy (vstest.console.exe, testhost a kolektor dat). Výchozí hodnota je 90. Zvyšte ho na pomalých počítačích nebo v případě, že latence sítě způsobuje vypršení časového limitu připojení. |
VSTEST_DIAG |
Povolí protokolování diagnostiky a určuje cestu k souboru protokolu. Ekvivalent možnosti /Diag . |
VSTEST_DIAG_VERBOSITY |
Nastaví úroveň podrobností protokolování diagnostiky, pokud VSTEST_DIAG je povoleno. Platné hodnoty jsou Verbose, Info, Warninga Error (výchozí hodnota je Verbose). |
VSTEST_HOST_DEBUG |
Pokud chcete povolit ladění procesu testhost, nastavte na libovolnou neprázdnou hodnotu. |
VSTEST_RUNNER_DEBUG |
Pokud chcete povolit ladění spouštěče (vstest.console.exe), nastavte na libovolnou neprázdnou hodnotu. |
VSTEST_DUMP_PATH |
Přepíše výchozí adresář, kde se ukládají výpisy stavu systému. |
VSTEST_DUMP_FORCEPROCDUMP |
Nastavte na libovolnou neprázdnou hodnotu, která vynutí použití ProcDump pro shromažďování výpisů stavu systému. |
VSTEST_DISABLE_UTF8_CONSOLE_ENCODING |
Nastavte na zakázání 1 nastavení kódování UTF-8 ve výstupu konzoly. |
VSTEST_CONSOLE_PATH |
Cesta ke spustitelnému souboruvstest.console.exe používanému aplikací předávání .NET SDK dotnet test Ekvivalent ke -p:VSTestConsolePath spuštění dotnet test v projektu. |
Související obsah
- Rychlý start: Spouštění testů z příkazového řádku v úložišti vstest
- Konfigurace testů jednotek pomocí souboru .runsettings
- Vytvoření kolektoru dat v úložišti vstest
- dotnet test command reference