Použití platformy Microsoft.Testing.Platform s dotnet test
Tento článek popisuje, jak pomocí dotnet test
spouštět testy při použití Microsoft.Testing.Platform
, a různé možnosti, které jsou k dispozici ke konfiguraci výstupu MSBuild při spouštění testů prostřednictvím Microsoft.Testing.Platform.
Tento článek ukazuje, jak pomocí dotnet test
spustit všechny testy v řešení (*.sln), které používají Microsoft.Testing.Platform
.
integrace dotnet test
Příkaz dotnet test představuje způsob, jak spouštět testy z řešení, projektů nebo již sestavených sestavení.
Microsoft.Testing.Platform připojí k této infrastruktuře jednotný způsob spouštění testů, zejména při migraci z VSTest na Microsoft.Testing.Platform
.
Integrace dotnet test
– režim VSTest
Microsoft.Testing.Platform
poskytuje kompatibilní vrstvu ( most VSTest), která umožňuje bezproblémovou práci s dotnet test
.
Testy je možné spustit spuštěním příkazu:
dotnet test
Tato vrstva spouští test prostřednictvím nástroje VSTest a integruje se s ní na úrovni adaptéru VSTest Test Framework.
dotnet test
– Režim Microsoft.Testing.Platform
Ve výchozím nastavení dotnet test
ke spouštění testů používá chování VSTest. Podporu Microsoft.Testing.Platform
můžete povolit v dotnet test
zadáním nastavení <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
v souboru projektu.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<!-- Add this to your project file. -->
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
</PropertyGroup>
<!-- ... -->
</Project>
Poznámka
Důrazně doporučujeme nastavit vlastnost TestingPlatformDotnetTestSupport
v Directory.Build.props
. Tímto způsobem nemusíte přidávat tuto vlastnost do každého souboru testovacího projektu a neriskujete zavedení nového projektu, který ji nenastaví. Nakonec byste totiž mohli mít řešení, ve kterém jsou některé projekty VSTest, zatímco jiné používají Microsoft.Testing.Platform. To může způsobit, že nebude fungovat správně, což je nepodporovaný scénář.
Důležitý
Přestože je TestingPlatformDotnetTestSupport
nastavená na true
, většina možností příkazového řádku definovaných v dotnet test zůstávají orientované na VSTest a nemají vliv na testy založené na Microsoft.Testing.Platform
. Chcete-li zadat argumenty do Microsoft.Testing.Platform
, je nutné použít jednu z metod popsaných v dokumentaci Microsoft.Testing.Platform pro argumenty příkazového řádku s dotnet test.
Následující seznam popisuje všechny možnosti příkazového řádku dotnet test
podporované Microsoft.Testing.Platform
:
-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>
Tyto argumenty jsou podporované, protože jsou propojené s krokem sestavení a jsou nezávislé na použité testovací platformě.
Microsoft.Testing.Platform
argumenty příkazového řádku s dotnet test
Argumenty, které se používají k volání testovací aplikace, můžete zadat jedním z následujících způsobů:
Počínaje verzí
Microsoft.Testing.Platform
1.4 (součástí MSTest verze 3.6), můžete na příkazovém řádku přidat možnosti za dvojitou pomlčku--
:dotnet test -- --minimum-expected-tests 10
Pomocí vlastnosti
TestingPlatformCommandLineArguments
MSBuild na příkazovém řádku:dotnet test -p:TestingPlatformCommandLineArguments="--minimum-expected-tests 10"
Nebo v souboru projektu:
<PropertyGroup> ... <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments> </PropertyGroup>
Další možnosti nástroje MSBuild
Integrace nástroje MSBuild poskytuje možnosti, které lze zadat v souboru projektu nebo prostřednictvím globálních vlastností na příkazovém řádku, například -p:TestingPlatformShowTestsFailure=true
.
K dispozici jsou tyto možnosti:
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
Nebo v souboru projektu:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!-- Add this to your project file. -->
<TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
</PropertyGroup>
<!-- ... -->
</Project>
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
Nebo v souboru projektu:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!-- Add this to your project file. -->
<TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>
</PropertyGroup>
<!-- ... -->
</Project>
Důležitý
Všechny výše uvedené příklady přidávají do souboru csproj vlastnosti, jako jsou EnableMSTestRunner
, TestingPlatformDotnetTestSupport
a TestingPlatformCaptureOutput
. Důrazně však doporučujeme nastavit tyto vlastnosti v Directory.Build.props
. Tímto způsobem ho nemusíte přidávat do každého souboru testovacího projektu a nemusíte riskovat zavedení nového projektu, který nenastavuje tyto vlastnosti a končí řešením, ve kterém jsou některé projekty VSTest, zatímco jiné jsou Microsoft.Testing.Platform, které nemusí správně fungovat a není podporovaný scénář.