Delen via


Ondersteuning voor Microsoft.Testing.Platform in MSTest (MSTest runner)

MSTest ondersteunt het uitvoeren van tests met zowel VSTest als Microsoft.Testing.Platform (MTP). De ondersteuning voor MTP wordt mogelijk gemaakt door de MSTest runner, die tests kan uitvoeren in alle contexten (bijvoorbeeld CI-pijplijnen (continue integratie), CLI, Visual Studio Test Explorer en VS Code Text Explorer. De MSTest runner is rechtstreeks ingesloten in uw MSTest-testprojecten en er zijn geen andere app-afhankelijkheden, zoals vstest.console of dotnet test, die nodig zijn om uw tests uit te voeren. U kunt uw tests echter nog steeds uitvoeren met behulp van dotnet test.

De MSTest runner is open source en bouwt voort op de Microsoft.Testing.Platform-bibliotheek. U vindt Microsoft.Testing.Platform code in de microsoft/testfx GitHub-opslagplaats. De MSTest runner wordt geleverd met MSTest in 3.2.0 of nieuwer.

MSTest runner inschakelen in een MSTest-project

Het is raadzaam om MSTest SDK te gebruiken, omdat het de configuratie van uw project aanzienlijk vereenvoudigt en het project bijwerkt, en het zorgt voor een juiste uitlijning van de versies van het platform (MSTest runner) en de bijbehorende extensies.

Wanneer u gebruikt MSTest SDK, bent u standaard aangemeld voor het gebruik van MSTest runner.

<Project Sdk="MSTest.Sdk/3.8.2">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

U kunt MSTest runner ook inschakelen door de EnableMSTestRunner eigenschap en instelling OutputType toe te voegen aan Exe het projectbestand. U moet er ook voor zorgen dat u MSTest 3.2.0 of nieuwer gebruikt. We raden u ten zeerste aan om bij te werken naar de nieuwste beschikbare MSTest-versie.

Bekijk het volgende voorbeeldprojectbestand:

<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>

Tip

Als u ervoor wilt zorgen dat alle testprojecten in uw oplossing de MSTest runner gebruiken, stelt u de eigenschappen EnableMSTestRunner en TestingPlatformDotnetTestSupport in Directory.Build.props bestand in in plaats van afzonderlijke projectbestanden.

Configuraties en filters

.runsettings

De MSTest runner ondersteunt de runsettings via de opdrachtregeloptie --settings. Zie MSTest configureren: Runsettings voor de volledige lijst met ondersteunde MSTest-vermeldingen. In de volgende opdrachten worden verschillende gebruiksvoorbeelden weergegeven.

Met behulp van dotnet run:

dotnet run --project Contoso.MyTests -- --settings config.runsettings

Met behulp van dotnet exec:

dotnet exec Contoso.MyTests.dll --settings config.runsettings

– of –

dotnet Contoso.MyTests.dll --settings config.runsettings

Gebruik van het uitvoerbare bestand:

Contoso.MyTests.exe --settings config.runsettings

Filter voor tests

U kunt het testfilter naadloos opgeven met behulp van de opdrachtregeloptie--filter. In de volgende opdrachten ziet u enkele voorbeelden.

Met behulp van dotnet run:

dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Met behulp van dotnet exec:

dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

– of –

dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Het uitvoerbare bestand gebruiken:

Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"