Wsparcie dla Microsoft.Testing.Platform w narzędziu MSTest (MSTest)
MSTest obsługuje uruchamianie testów zarówno z VSTest, jak i Microsoft.Testing.Platform (MTP). Obsługa protokołu MTP jest zapewniana przez framework MSTest, który może uruchamiać testy we wszystkich kontekstach (na przykład w potokach ciągłej integracji, interfejsie wiersza polecenia, Eksploratorze testów programu Visual Studio i Eksploratorze testów programu VS Code). Moduł uruchamiający MSTest jest osadzony bezpośrednio w projektach testowych MSTest i nie ma żadnych innych zależności aplikacji, takich jak vstest.console
lub dotnet test
, wymaganych do uruchamiania testów. Jednak nadal można uruchamiać testy przy użyciu dotnet test
.
Moduł uruchamiający MSTest jest oprogramowaniem open source i opiera się na bibliotece Microsoft.Testing.Platform
. Kod Microsoft.Testing.Platform
można znaleźć w repozytorium microsoft/testfx GitHub. Moduł uruchamiający MSTest jest dostarczany z pakietem MSTest in 3.2.0
lub nowszym.
Włącz Microsoft.Testing.Platform w projekcie MSTest
Zaleca się używanie zestawu MSTest SDK, ponieważ znacznie upraszcza konfigurację projektu i aktualizowanie projektu, a także zapewnia odpowiednie dopasowanie wersji platformy (Microsoft.Testing.Platform) i jej rozszerzeń.
Jeśli używasz MSTest SDK
, domyślnie wyrażasz zgodę na korzystanie z witryny Microsoft.Testing.Platform.
<Project Sdk="MSTest.Sdk/3.8.2">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Alternatywnie możesz włączyć moduł uruchamiający MSTest, dodając właściwość EnableMSTestRunner
i ustawiając OutputType
na Exe
w pliku projektu. Należy również upewnić się, że używasz MSTest 3.2.0
lub nowszych. Zdecydowanie zalecamy aktualizację do najnowszej dostępnej wersji MSTest.
Rozważmy następujący przykładowy plik projektu:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Enable Microsoft.Testing.Platform, 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 Microsoft.Testing.Platform, 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>
Napiwek
Aby upewnić się, że wszystkie projekty testowe w rozwiązaniu używają modułu uruchamiającego MSTest, ustaw właściwości EnableMSTestRunner
i TestingPlatformDotnetTestSupport
w pliku Directory.Build.props zamiast pojedynczych plików projektu.
Konfiguracje i filtry
.runsettings
Platforma Microsoft.Testing.Platform obsługuje runsettings za pośrednictwem opcji wiersza polecenia --settings
. Pełną listę obsługiwanych wpisów MSTest można znaleźć w Konfigurowanie MSTest: Runsettings. Poniższe polecenia pokazują różne przykłady użycia.
Korzystanie z dotnet run
:
dotnet run --project Contoso.MyTests -- --settings config.runsettings
Korzystanie z dotnet exec
:
dotnet exec Contoso.MyTests.dll --settings config.runsettings
— lub —
dotnet Contoso.MyTests.dll --settings config.runsettings
Przy użyciu pliku wykonywalnego:
Contoso.MyTests.exe --settings config.runsettings
Filtr testów
Możesz filtr testów bezproblemowo ustawić używając opcji --filter
wiersza polecenia. W poniższych poleceniach przedstawiono kilka przykładów.
Korzystanie z dotnet run
:
dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Korzystanie z dotnet exec
:
dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
— lub —
dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Przy użyciu pliku wykonywalnego:
Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"