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.
Microsoft.Testing.Platform je jednoduchá a přenosná alternativa k VSTest pro spouštění testů ve všech kontextech, včetně kanálů kontinuální integrace (CI), rozhraní příkazového řádku, Průzkumníka testů sady Visual Studio a Průzkumníka testů VS Code. Microsoft.Testing.Platform je vložený přímo do vašich testovacích projektů a nejsou potřebné žádné další závislosti aplikací, jako například vstest.console nebo dotnet test, pro spuštění vašich testů.
Microsoft.Testing.Platform je open source. Kód Microsoft.Testing.Platform najdete v úložišti microsoft/testfx GitHubu.
Pilíře Microsoft.Testing.Platform
Tato nová testovací platforma je založená na prostředí týmu .NET Developer Experience Testing a zaměřuje se na řešení problémů, ke kterým došlo od vydání .NET Core v roce 2016. I když existuje vysoká úroveň kompatibility mezi rozhraním .NET Framework a .NET Core/.NET, některé klíčové funkce, jako je systém pluginů a nové možné formáty kompilací .NET, ztížily rozvoj nebo plnou podporu nové vlastnosti modulu runtime s aktuální architekturou platformy VSTest .
Hlavní hlavní faktory pro vývoj nové testovací platformy jsou podrobně popsány v následujících příkladech:
determinismus: Zajištění, aby spuštění stejných testů v různých kontextech (místní, CI) vytvořilo stejný výsledek. Nové běhové prostředí nespoléhá na reflexi ani na žádnou jinou funkci běhového prostředí .NET ke koordinaci testového spuštění.
Transparentnost běhu: Testovací běh neinterferuje s kódem testovací architektury, nevytváří izolované kontexty jako
AppDomainneboAssemblyLoadContext, a nepoužívá reflekci ani vlastní překladače sestavení.Registrace rozšíření v době kompilace: Rozšíření, jako jsou testovací architektury a rozšíření mimo proces, se registrují během kompilace, aby se zajistila determinismus a usnadnila detekce nekonzistence.
Nulové závislosti: Jádrem platformy je jedno sestavení .NET,
Microsoft.Testing.Platform.dll, které nemá jiné závislosti než podporované prostředí runtime.Hostovatelný: Modul runtime lze hostovat v jakékoli aplikaci .NET. Zatímco konzolová aplikace se běžně používá ke spouštění testů, můžete vytvořit testovací aplikaci v libovolném typu aplikace .NET. To vám umožní spouštět testy v rámci speciálních kontextů, jako jsou zařízení nebo prohlížeče, kde můžou existovat omezení.
Podpora všech platforem .NET: Podpora aktuálních a budoucích platforem .NET, včetně Native AOT.
Výkonnost: Nalezení správné rovnováhy mezi funkcemi a body rozšíření, aby nedocházelo k nafouknutí modulu runtime nefundamentálním kódem. Nová testovací platforma je navržená k "orchestraci" testovacího běhu, a nikoli k poskytování podrobností implementace, jak to udělat.
Dostatečně rozšiřitelný: Nová platforma je postavena na bodech rozšiřitelnosti, což umožňuje maximální přizpůsobení běhu času. Umožňuje nakonfigurovat hostitele testovacího procesu, sledovat proces testování a využívat informace z testovací architektury v rámci procesu testovacího hostitele.
nasazení jednoho modulu: Funkce hostability umožňuje jeden model nasazení modulu, kde lze použít jeden výsledek kompilace k podpoře všech bodů rozšiřitelnosti, a to jak mimo proces, tak i bez nutnosti dodávat různé spustitelné moduly.
Podporované testovací architektury
- MSTest. V MSTest je podpora
Microsoft.Testing.Platformzajištěna prostřednictvím MSTest runneru. - NUnit. V rámci NUnit se podpora
Microsoft.Testing.Platformprovádí prostřednictvím spouštěče NUnit. - xUnit.net: V xUnit.net se podpora
Microsoft.Testing.Platformprovádí prostřednictvím spouštěčem xUnit.net. - TUnit: zcela postaven na
Microsoft.Testing.Platform, další informace naleznete v dokumentaci TUnit.
Spouštění a ladění testů
Microsoft.Testing.Platform testovací projekty jsou vytvořené jako spustitelné soubory, které je možné spouštět (nebo ladit) přímo. Neexistuje žádná další konzole ani příkaz pro spuštění testu. Aplikace se ukončí nenulovým ukončovacím kódem, pokud dojde k chybě, která je typická pro většinu spustitelných souborů. Další informace o známých ukončovacích kódech naleznete viz Microsoft.Testing.Platform ukončovací kódy.
Spropitné
Konkrétní ukončovací kód můžete ignorovat pomocí možnosti příkazového řádku --ignore-exit-code.
Pomocí vlastnosti TestingPlatformCommandLineArguments MSBuild můžete také nastavit možnosti příkazového řádku, které platí pro konkrétní testovací projekt v souboru projektu. Jedním z běžných případů použití je pro testovací projekty, ve kterých jsou všechny testy ignorovány, které se obvykle ukončují s ukončovacím kódem 8 (v testovací relaci neproběhly žádné testy). V tomto scénáři můžete do souboru projektu přidat následující pod sekci označenou PropertyGroup.
<TestingPlatformCommandLineArguments>$(TestingPlatformCommandLineArguments) --ignore-exit-code 8</TestingPlatformCommandLineArguments>
Důležitý
Ve výchozím nastavení Microsoft.Testing.Platform shromažďuje telemetrii. Další informace a možnosti odhlášení viz kapitolu Microsoft.Testing.Platformtelemetrie.
Publikování testovacího projektu pomocí dotnet publish a spuštění aplikace přímo představuje jiný způsob, jak testy spustit. Například spuštění příkazu ./Contoso.MyTests.exe. V některých scénářích je také možné použít dotnet build k vytvoření spustitelného souboru, ale existují hraniční případy ke zvážení, jako je Native AOT.
Použijte dotnet run
Příkaz dotnet run lze použít k sestavení a spuštění testovacího projektu. To je nejjednodušší, i když někdy nejpomalejší způsob, jak spustit testy. Použití dotnet run je praktické, když upravujete a spouštíte testy místně, protože zajišťuje, aby se projekt testů v případě potřeby znovu sestavil.
dotnet run také automaticky najde projekt v aktuální složce.
dotnet run --project Contoso.MyTests
Další informace o dotnet runnaleznete v tématu dotnet run.
Použijte dotnet exec
Příkaz dotnet exec nebo dotnet slouží ke spuštění (nebo spuštění) již vytvořeného testovacího projektu, je to alternativa k přímému spuštění aplikace.
dotnet exec vyžaduje cestu k sestavené knihovně DLL testovacího projektu.
dotnet exec Contoso.MyTests.dll
nebo
dotnet Contoso.MyTests.dll
Poznámka
Při zadání cesty ke spustitelnému souboru testovacího projektu (*.exe) dojde k chybě:
Error:
An assembly specified in the application dependencies manifest
(Contoso.MyTests.deps.json) has already been found but with a different
file extension:
package: 'Contoso.MyTests', version: '1.0.0'
path: 'Contoso.MyTests.dll'
previously found assembly: 'S:\t\Contoso.MyTests\bin\Debug\net8.0\Contoso.MyTests.exe'
Další informace o dotnet execviz dotnet exec.
Použijte dotnet test
Microsoft.Testing.Platform nabízí vrstvu kompatibility s vstest.console.exe a dotnet test, která zajišťuje, že testy můžete spouštět stejně jako předtím při povolování nového scénáře provádění.
dotnet test Contoso.MyTests.dll
Možnosti
Následující seznam popisuje pouze možnosti platformy. Pokud chcete zobrazit konkrétní možnosti, které jednotlivá rozšíření přináší, podívejte se na stránku dokumentace k rozšíření nebo použijte možnost --help.
@Určuje název souboru odpovědi. Název souboru odpovědi musí okamžitě následovat za znakem @ bez mezer mezi znakem @ a názvem souboru odpovědi.
Možnosti v souboru odpovědi se interpretují tak, jako kdyby byly na daném místě na příkazovém řádku. Každý argument v souboru odpovědi musí začínat a končit na stejném řádku. Zpětné lomítko () nelze použít ke zřetězení řádků. Použití souboru odpovědi pomáhá pro velmi dlouhé příkazy, které by mohly překročit limity terminálu. Soubor odpovědi můžete kombinovat s vloženými argumenty příkazového řádku. Například:
./TestExecutable.exe @"filter.rsp" --timeout 10skde filter.rsp může mít následující obsah:
--filter "A very long filter"Nebo jeden soubor rsp lze použít k určení časového limitu i filtru následujícím způsobem:
./TestExecutable.exe @"arguments.rsp"--filter "A very long filter" --timeout 10s--config-fileUrčuje soubor testconfig.json.
--diagnosticPovolí protokolování diagnostiky. Výchozí úroveň protokolu je
Trace. Soubor je zapsán ve výstupním adresáři s následujícím formátem názvu,log_[MMddHHssfff].diag.--diagnostic-filelogger-synchronouswriteVynutí vestavěný nástroj pro záznam do souboru pro synchronní zápis záznamů. Užitečné ve scénářích, kdy nechcete ztratit žádné položky protokolu (pokud se proces chybově ukončí). Tím se zpomalí spuštění testu.
--diagnostic-output-directoryVýstupní adresář protokolování diagnostiky, pokud není zadaný, soubor se vygeneruje ve výchozím adresáři TestResults.
--diagnostic-output-fileprefixPředpona názvu souboru protokolu. Výchozí hodnota je
"log_".--diagnostic-verbosityDefinuje úroveň verbosity při použití přepínače
--diagnostic. Dostupné hodnoty jsouTrace,Debug,Information,Warning,ErrorneboCritical.--exit-on-process-exitUkončete testovací proces, pokud skončí závislý proces. Je nutné zadat PID.
--helpVytiskne popis použití příkazu.
--ignore-exit-codeUmožňuje, aby některé nenulové ukončovací kódy byly ignorovány a místo toho se vrátí jako
0. Další informace naleznete v tématu Ignorovat konkrétní ukončovací kódy.--infoZobrazí rozšířené informace o testovací aplikaci .NET, například:
- Platforma.
- Prostředí.
- Každý zaregistrovaný poskytovatel příkazového řádku, například
name,version,descriptionaoptions. - Každý registrovaný nástroj, například
command,name,version,descriptiona všechny poskytovatele příkazového řádku.
Tato funkce slouží k pochopení rozšíření, která by registrovala stejnou možnost příkazového řádku nebo změny dostupných možností mezi několika verzemi rozšíření (nebo platformou).
--list-testsZobrazí seznam dostupných testů. Testy nebudou provedeny.
--maximum-failed-testsUrčuje maximální počet selhání testů, které po dosažení zastaví testovací běh. Podpora tohoto přepínače vyžaduje, aby autoři architektury implementovali funkci
IGracefulStopTestExecutionCapability. Ukončovací kód při dosažení tohoto počtu neúspěšných testů je 13. Další informace naleznete v tématu Kódy ukončení Microsoft.Testing.Platform.Poznámka
Tato funkce je dostupná na platformě Microsoft.Testing.Platform od verze 1.5.
--minimum-expected-testsUrčuje minimální počet testů, které se mají spustit. Ve výchozím nastavení se očekává, že se spustí aspoň jeden test.
--results-directoryAdresář, do kterého se umístí výsledky testu. Pokud zadaný adresář neexistuje, vytvoří se. Výchozí hodnota je
TestResultsv adresáři, který obsahuje testovací aplikaci.--timeoutČasový limit spuštění globálního testu. Vezme jeden argument jako řetězec ve formátu
<value>[h|m|s], kde<value>je plovoucí.
Integrace nástroje MSBuild
Balíček NuGet Microsoft.Testing.Platform.MSBuild poskytuje různé integrace pro Microsoft.Testing.Platform s nástrojem MSBuild:
- Podpora pro
dotnet test. Další informace naleznete v tématu Testování pomocí testu dotnet. - Podpora pro
ProjectCapabilitypožadovaná průzkumníky testůVisual StudioaVisual Studio Code. - Automatické generování vstupního bodu ( metoda
Main). - Automatické generování konfiguračního souboru.
Poznámka
Tato integrace funguje tranzitivním způsobem (projekt, který odkazuje na jiný projekt odkazující na tento balíček, bude se chovat tak, jako by odkazoval na balíček) a může být zakázán prostřednictvím IsTestingPlatformApplication VLASTNOSTI MSBuild.