Stöd för Microsoft.Testing.Platform i MSTest (MSTest runner)
MSTest stöder körning av tester med både VSTest och Microsoft.Testing.Platform (MTP). Stödet för MTP drivs av MSTest-löparen, som kan köra tester i alla kontexter (till exempel CI-pipelines (kontinuerlig integrering), CLI, Visual Studio Test Explorer och VS Code Text Explorer). MSTest-löparen är inbäddad direkt i dina MSTest-testprojekt, och det finns inga andra appberoenden, såsom vstest.console
eller dotnet test
, som behövs för att köra dina tester. Du kan dock fortfarande köra dina tester med hjälp av dotnet test
.
MSTest-löparen är öppen källkod och bygger på Microsoft.Testing.Platform
-biblioteket. Du hittar Microsoft.Testing.Platform
kod i microsoft/testfx- GitHub-lagringsplats. MSTest-löparen levereras med MSTest in 3.2.0
eller senare.
Aktivera Microsoft.Testing.Platform i ett MSTest-projekt
Vi rekommenderar att du använder MSTest SDK eftersom det avsevärt förenklar projektkonfigurationen och uppdateringen av projektet, och det säkerställer en korrekt justering av versionerna av plattformen (Microsoft.Testing.Platform) och dess tillägg.
När du använder MSTest SDK
väljer du som standard att använda Microsoft.Testing.Platform.
<Project Sdk="MSTest.Sdk/3.8.2">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Alternativt kan du aktivera MSTest runner genom att lägga till EnableMSTestRunner
-egenskapen och ställa in OutputType
till Exe
i din projektfil. Du måste också se till att du använder MSTest 3.2.0
eller senare. Vi rekommenderar starkt att du uppdaterar till den senaste tillgängliga MSTest-versionen.
Överväg följande exempelprojektfil:
<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>
Tips
För att säkerställa att alla testprojekt i lösningen använder MSTest-löparen anger du egenskaperna EnableMSTestRunner
och TestingPlatformDotnetTestSupport
i Directory.Build.props fil i stället för enskilda projektfiler.
Konfigurationer och filter
.runsettings
Microsoft.Testing.Platform stöder runsettings genom kommandoradsalternativet --settings
. Den fullständiga listan över MSTest-poster som stöds finns i Konfigurera MSTest: Runsettings. Följande kommandon visar olika användningsexempel.
Att använda dotnet run
:
dotnet run --project Contoso.MyTests -- --settings config.runsettings
Använda dotnet exec
:
dotnet exec Contoso.MyTests.dll --settings config.runsettings
-eller-
dotnet Contoso.MyTests.dll --settings config.runsettings
Använd den körbara filen:
Contoso.MyTests.exe --settings config.runsettings
Testfiltret
Du kan ange testfiltret sömlöst med hjälp av kommandoradsalternativet --filter
. Följande kommandon visar några exempel.
Använda dotnet run
:
dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Användning av dotnet exec
:
dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
-eller-
dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Använd den körbara filen:
Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"