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.
Tento článek obsahuje přehled o příkazu rozhraní příkazového řádku dotnet test, včetně historické kompatibility s VSTestem i Microsoft.Testing.Platform (MTP).
Příkaz dotnet test funguje ve dvou primárních režimech:
-
VSTest režim: Toto je výchozí režim pro
dotnet testa byl jediným dostupným režimem před .NET 10 SDK. Je primárně určen pro VSTest, ale může také spouštět testy Microsoft.Testing.Platform prostřednictvím balíčku NuGet Microsoft.Testing.Platform.MSBuild. - Microsoft. Testing.Platform režim: Zavedený se sadou .NET 10 SDK podporuje tento režim výhradně testovací aplikace vytvořené pomocí Microsoft. Testing.Platform.
Návod
Referenční informace k rozhraní příkazového řádku najdete v dotnet test.
Režim VSTestu dotnet test
VSTest byl dlouhou dobu jedinou testovací platformou v .NET. V důsledku toho dotnet test byl výhradně navržen pro VSTest se všemi možnostmi příkazového řádku přizpůsobenými VSTestu.
Proces zahrnuje vyvolání VSTest cíle MSBuild, což spustí další interní cíle a nakonec spustí vstest.console. Všechny dotnet test možnosti příkazového řádku se převádějí na jejich ekvivalenty ve vstest.console.
Spouštění projektů MTP v režimu VSTest
dotnet test byl navržen tak, aby spouštěl projekty VSTest v režimu VSTest. Projekty MTP však můžete spouštět v režimu dotnet test VSTest pomocí Microsoft. Testing.Platform.MSBuild balíček. Z pohledu uživatele je tato podpora povolena nastavením TestingPlatformDotnetTestSupport vlastnosti MSBuild na true (je false to ve výchozím nastavení z důvodu zpětné kompatibility). Pokud je tato vlastnost nastavena na true, Microsoft. Testing.Platform.MSBuild změní chování cíle VSTest a přesměruje ho na volání InvokeTestingPlatform.
InvokeTestingPlatform je cíl nástroje MSBuild zahrnutý v Microsoft. Testing.Platform.MSBuild, který je zodpovědný za správné spouštění testovacích aplikací MTP jako spustitelných souborů. Možnosti příkazového řádku specifické pro VSTest, například --logger, se v tomto režimu bezobslužně ignorují. Pokud chcete zahrnout argumenty specifické pro MTP, například --report-trx, musíte je připojit za další --. Například: dotnet test -- --report-trx. V MTP 1.9 se při zjištění argumentu bezobslužného ignorování vytvoří upozornění s kódem MTP0001.
Poznámka:
MsTest a NUnit používají balíček Microsoft.Testing.Extensions.VSTestBridge. Nastavením EnableMSTestRunner nebo EnableNUnitRunner (který povolí Microsoft. Testing.Platform) váš testovací projekt bude podporovat VSTest i Microsoft. Testing.Platform.
Pokud v tomto scénáři použijete režim dotnet test VSTest a nenastavíte TestingPlatformDotnetTestSupport hodnotu true, v podstatě běžíte zcela s VSTest, jako kdyby EnableMSTestRunner a EnableNUnitRunner nejsou nastaveny na true.
Poznámka:
Důrazně doporučujeme nastavit TestingPlatformDotnetTestSupport vlastnost v Directory.Build.props. Tím zajistíte, že ho nemusíte přidávat do každého testovacího souboru projektu jednotlivě. Kromě toho zabraňuje riziku zavedení nového testovacího projektu, který nenastaví tuto vlastnost, což může vést k řešení, kdy některé projekty používají VSTest, zatímco jiné používají Microsoft. Testing.Platform. Tato smíšená konfigurace nemusí fungovat správně a je to nepodporovaný scénář.
Důležité
Spouštění projektů MTP v režimu VSTest se považuje za starší verzi ve prospěch novějšího prostředí v sadě .NET 10 SDK. Podpora spuštění v tomto režimu se odebere v Microsoft. Testing.Platform verze 2, pokud běží s .NET 10 SDK. Podpora zůstává k dispozici pro .NET 9 SDK a starší pro zpětnou kompatibilitu.
Další informace naleznete v tématu Migrace do režimu MTP .dotnet test
Následující seznam popisuje možnosti příkazového řádku příkazu dotnet test v režimu VSTest, které jsou podporovány Microsoft. Testing.Platform. Tyto možnosti jsou specifické pro proces sestavení a nejsou předány službě VSTest, proto fungují s MTP.
-a|--arch <ARCHITECTURE>--artifacts-path <ARTIFACTS_DIR>-c|--configuration <CONFIGURATION>-f|--framework <FRAMEWORK>-e|--environment <NAME="VALUE">--interactive--no-build--nologo--no-restore-o|--output <OUTPUT_DIRECTORY>--os <OS>-r|--runtime <RUNTIME_IDENTIFIER>-v|--verbosity <LEVEL>
Návod
Argumenty příkazového řádku testovací aplikace můžete přizpůsobit pomocí TestingPlatformCommandLineArguments vlastnosti MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Zobrazit selhání pro test
Ve výchozím nastavení se selhání testů shrnují do souboru .log a do nástroje MSBuild se hlásí jedno selhání na jeden testovací projekt.
Pokud chcete zobrazit chyby na neúspěšný test, zadejte na příkazovém řádku -p:TestingPlatformShowTestsFailure=true nebo do souboru projektu přidejte vlastnost <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>.
Na příkazovém řádku:
dotnet test -p:TestingPlatformShowTestsFailure=true
Zobrazit úplný výstup platformy
Ve výchozím nastavení se veškerý výstup konzoly, který zapisuje podkladový testovací spustitelný soubor, zachytí a skryje uživateli. To zahrnuje banner, informace o verzi a formátované testovací informace.
Chcete-li zobrazit tyto informace společně s výstupem nástroje MSBuild, použijte <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>.
Tato možnost nemá vliv na to, jak testovací architektura zachycuje výstup uživatele napsaný Console.WriteLine nebo jinými podobnými způsoby zápisu do konzoly.
Na příkazovém řádku:
dotnet test -p:TestingPlatformCaptureOutput=false
Pokročilé technické podrobnosti
V režimu dotnet test VSTest se -- používá k označení argumentů RunSettings. Původně byl dotnet test navržen tak, aby tyto argumenty předal jako vlastnost MSBuild nazvanou VSTestCLIRunSettings. Proto při spouštění testovacích aplikací MTP v režimu VSTest znovu použijeme hodnotu VSTestCLIRunSettings , která představuje "argumenty aplikace".
Míchání VSTest a Microsoft.Testing.Platform (MTP)
Při spuštění dotnet test v režimu VSTest se doporučuje vyhnout zahrnutí VSTestu i Microsoft. Testing.Platform ve stejném řešení
Tento scénář není oficiálně podporovaný a měli byste vědět o následujících situacích:
- Možnosti příkazového řádku specifické pro VSTest budou platit pouze pro projekty VSTest, a ne pro testovací aplikace MTP.
- Možnosti příkazového řádku specifické pro MTP zadané po
--budou považovány za argumenty RunSettings pro projekty VSTest.
Klíčové poznatky
- Pokud chcete spouštět testovací aplikace MTP v režimu
dotnet testVSTest, měli byste použítMicrosoft.Testing.Platform.MSBuild, předat možnosti příkazového řádku specifické pro MTP za extra--a nastavitTestingPlatformDotnetTestSupportnatrue. - Možnosti příkazového řádku orientované na VSTest jsou bezobslužně ignorovány.
Kvůli těmto problémům .NET zavedl nový režim dotnet test speciálně navržený pro MTP. Doporučujeme uživatelům MTP přejít z režimu VSTest dotnet test do nového režimu pomocí sady SDK .NET 10.
Microsoft.Testing.Platform (MTP) režim dotnet test
Pokud chcete vyřešit problémy, ke kterým došlo při spuštění dotnet test s MTP v režimu VSTest, .NET zavedl nový režim v sadě SDK .NET 10, která je speciálně navržená pro MTP.
Pokud chcete tento režim povolit, přidejte do global.json souboru následující konfiguraci:
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Důležité
Prostředí dotnet test pro MTP je podporováno pouze v Microsoft.Testing.Platform verze 1.7 a novější.
Vzhledem k tomu, že tento režim je speciálně navržený pro Microsoft. Testing.Platform, nevyžaduje se TestingPlatformDotnetTestSupport ani další --.
Důležité
Tento režim je kompatibilní pouze s Microsoft. Testing.Platform verze 1.7.0 a novější
Důležité
Pokud váš testovací projekt podporuje VSTest, ale nepodporuje MTP, vygeneruje se chyba.
Návod
Argumenty příkazového řádku testovací aplikace můžete přizpůsobit pomocí TestingPlatformCommandLineArguments vlastnosti MSBuild:
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
Migrace do režimu MTP dotnet test
Pro uživatele MTP, kteří používají režim VSTest, dotnet test je třeba podniknout několik kroků pro přechod na novější prostředí dotnet test.
- Přidejte oddíl
testdo souboruglobal.json, jak je znázorněno výše. - Odeberte vlastnost
TestingPlatformDotnetTestSupportMSBuild, protože už není požadována. - Odeberte
TestingPlatformCaptureOutputaTestingPlatformShowTestsFailurevlastnosti MSBuild, protože již nejsou používány novýmdotnet test. - Odeberte nadbytečné
--, napříkladdotnet test -- --report-trxby se mělo státdotnet test --report-trx. - Pokud například předáte konkrétní řešení (nebo adresář obsahující řešení),
dotnet test MySolution.slnmělo by se to státdotnet test --solution MySolution.sln. - Pokud například
dotnet test MyProject.csprojpředáte konkrétní projekt (nebo adresář obsahující projekt), mělo by se to státdotnet test --project MyProject.csproj. - Pokud například předáte konkrétní knihovnu DLL,
dotnet test path/to/UnitTests.dll, měla by se změnit nadotnet test --test-modules path/to/UnitTests.dll. Mějte na paměti, že--test-modulespodporuje také globbing.