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 MTP prostřednictvím Microsoft. Testing.Platform.MSBuild balíček NuGet. - MTP režim: Zavedený se sadou .NET 10 SDK tento režim výhradně podporuje testovací aplikace vytvořené pomocí MTP.
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é umožňují MTP) bude váš testovací projekt podporovat jak VSTest, tak MTP.
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í MTP. 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 MTP 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 možností příkazového řádku dotnet test v VSTest, které podporuje MTP. 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".
Kombinování VSTest a MTP
Při spuštění dotnet test v režimu VSTest se doporučuje vyhnout zahrnutí VSTestu i MTP 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 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.
Režim MTP 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 MTP, nejsou nutné ani TestingPlatformDotnetTestSupport, ani další --.
Důležité
Tento režim je kompatibilní pouze s MTP 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.