Dela via


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 SDKvä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"