Podpora microsoft.Testing.Platform v MSTest (MSTest runner)
MSTest podporuje spouštění testů s VSTest a Microsoft.Testing.Platform (MTP). Podpora MTP je založená na msTest runneru, který může spouštět testy ve všech kontextech (například v kanálech kontinuální integrace ( CI), CLI, Visual Studio Test Exploreru a VS Code Text Exploreru). MsTest runner je vložen přímo do vašich projektů testů MSTest a nejsou potřeba žádné další závislosti aplikace, například vstest.console
nebo dotnet test
, ke spuštění testů. Přesto však můžete testy spouštět pomocí dotnet test
.
MsTest Runner je open source a vychází z knihovny Microsoft.Testing.Platform
. Kód Microsoft.Testing.Platform
najdete v úložišti microsoft/testfx GitHubu. MSTest runner je součástí MSTest in 3.2.0
nebo novější.
Povolit nástroj MSTest runner v projektu MSTest
Doporučuje se používat sadu MSTest SDK , protože výrazně zjednodušuje konfiguraci a aktualizaci projektu a zajišťuje správné sladění verzí platformy (MSTest runner) a jeho rozšíření.
Při použití MSTest SDK
se ve výchozím nastavení přihlásíte k používání msTest runneru.
<Project Sdk="MSTest.Sdk/3.8.2">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Případně můžete povolit MSTest runner přidáním EnableMSTestRunner
vlastnosti a nastavením OutputType
na Exe
ve vašem souboru projektu. Musíte také zajistit, že používáte MSTest 3.2.0
nebo novější. Důrazně doporučujeme aktualizovat na nejnovější dostupnou verzi MSTest.
Podívejte se na následující příklad souboru projektu:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Enable the MSTest runner, this is an opt-in feature -->
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!--
Displays error on console in addition to the log file. Note that this feature comes with a performance impact.
For more information, visit https://learn.microsoft.com/dotnet/core/testing/microsoft-testing-platform-integration-dotnet-test#show-failure-per-test
-->
<TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<!--
MSTest meta package is the recommended way to reference MSTest.
It's equivalent to referencing:
Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework
MSTest.Analyzers
Starting with 3.8, it also includes:
Microsoft.Testing.Extensions.TrxReport
Microsoft.Testing.Extensions.CodeCoverage
-->
<PackageReference Include="MSTest" Version="3.8.0" />
<!--
Coverlet collector isn't compatible with MSTest runner, you can
either switch to Microsoft CodeCoverage (as shown below),
or switch to be using coverlet global tool
https://github.com/coverlet-coverage/coverlet#net-global-tool-guide-suffers-from-possible-known-issue
-->
<PackageReference Include="Microsoft.Testing.Extensions.CodeCoverage"
Version="17.10.1" />
</ItemGroup>
</Project>
Spropitné
Pokud chcete zajistit, aby všechny projekty testů ve vašem řešení používaly msTest runner, nastavte EnableMSTestRunner
a TestingPlatformDotnetTestSupport
vlastnosti v souboru Directory.Build.props místo jednotlivých souborů projektu.
Konfigurace a filtry
.runsettings
MSTest runner podporuje
Pomocí dotnet run
:
dotnet run --project Contoso.MyTests -- --settings config.runsettings
Pomocí dotnet exec
:
dotnet exec Contoso.MyTests.dll --settings config.runsettings
nebo
dotnet Contoso.MyTests.dll --settings config.runsettings
Použití spustitelného souboru:
Contoso.MyTests.exe --settings config.runsettings
Filtr testů
Filtr testů můžete bezproblémově zadat pomocí možnosti --filter
příkazového řádku . Následující příkazy ukazují některé příklady.
Pomocí dotnet run
:
dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Pomocí dotnet exec
:
dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
nebo
dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Použití spustitelného souboru:
Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"