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 poskytuje přehled o příkazu dotnet test příkazového řádku, včetně jeho kompatibility v minulosti s VSTest i Microsoft.Testing.Platform (MTP).
Příkaz dotnet test funguje ve dvou primárních režimech:
-
Režim VSTest : Jedná se o výchozí režim pro
dotnet testa byl jediným dostupným režimem před sadou .NET 10 SDK. Je primárně určen pro VSTest, ale může také spouštět Microsoft.Testing.Platform test prostřednictvím balíčku NuGet Microsoft.Testing.Platform.MSBuild . - Režim Microsoft.Testing.Platform : Zavedený se sadou .NET 10 SDK, tento režim výhradně podporuje testovací aplikace vytvořené pomocí platformy 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 dotnet test režimu VSTest pomocí balíčku Microsoft.Testing.Platform.MSBuild . 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í VSTest cílové chování, přesměrování na volání InvokeTestingPlatform.
InvokeTestingPlatform je cíl 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 (což povoluje Microsoft.Testing.Platform) bude váš testovací projekt podporovat jak VSTest, tak 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í, ve kterém 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ěží se sadou .NET 10 SDK. Podpora zůstává k dispozici pro .NET 9 SDK a starší verze pro zajištění zpětné kompatibility.
Další informace naleznete v tématu Migrace do režimu MTP .dotnet test
Následující seznam popisuje možnosti příkazového dotnet test řádku příkazu v režimu VSTest, které podporuje 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>
Další informace týkající se spouštění projektů MTP v režimu VSTest naleznete dotnet testv tématu Použití Microsoft.Testing.Platform s režimem VSTest .dotnet test
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".
Kombinování VSTest a Microsoft.Testing.Platform (MTP)
Při spuštění dotnet test v režimu VSTest se doporučuje vyhnout zahrnutí VSTest i Microsoft.Testing.Platform do stejného ř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
dotnet testrežimu VSTest, 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 platforma .NET zavedla nový dotnet test režim určený speciálně pro MTP. Doporučujeme uživatelům MTP přejít z režimu VSTest dotnet test do nového režimu pomocí sady .NET 10 SDK.
Režim platformy Microsoft.Testing.Platform (MTP) dotnet test
Aby se vyřešily problémy, ke kterým došlo při spuštění dotnet test STP v režimu VSTest, platforma .NET zavedla v sadě .NET 10 SDK nový režim, 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 ve Microsoft.Testing.Platform verzi 1.7 a novější.
Vzhledem k tomu, že tento režim je speciálně navržený pro Microsoft.Testing.Platform, TestingPlatformDotnetTestSupport ani další -- nejsou vyžadovány.
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.