Freigeben über


Microsoft.Testing.Platform-Unterstützung in MSTest (MSTest runner)

MSTest unterstützt die Ausführung von Tests sowohl mit VSTest als auch mit Microsoft.Testing.Platform (MTP)-. Die Unterstützung für MTP wird von der MSTest-Runner unterstützt, die Tests in allen Kontexten (z. B. Ci-Pipelines für kontinuierliche Integration, CLI, Visual Studio Test Explorer und VS Code Text Explorer) ausführen kann. Der MSTest Runner ist direkt in Ihre MSTest-Testprojekte eingebettet, und es sind keine anderen App-Abhängigkeiten wie vstest.console oder dotnet test erforderlich, um Ihre Tests auszuführen. Sie können Ihre Tests jedoch weiterhin mit dotnet testausführen.

Der MSTest-Runner ist Open Source und baut auf der Microsoft.Testing.Platform-Bibliothek auf. Sie finden Microsoft.Testing.Platform Code im microsoft/testfx GitHub-Repository. Der MSTest Runner ist gebündelt mit MSTest in 3.2.0 oder einer neueren Version.

Aktivieren von Microsoft.Testing.Platform in einem MSTest-Projekt

Es wird empfohlen, MSTest SDK- zu verwenden, da die Projektkonfiguration und das Aktualisieren des Projekts erheblich vereinfacht wird, und es stellt eine ordnungsgemäße Ausrichtung der Versionen der Plattform (Microsoft.Testing.Platform) und deren Erweiterungen sicher.

Wenn Sie MSTest SDKverwenden, haben Sie sich standardmäßig für die Verwendung von Microsoft.Testing.Platform entschieden.

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

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

</Project>

Alternativ können Sie MSTest-Runner aktivieren, indem Sie die EnableMSTestRunner-Eigenschaft hinzufügen und OutputType auf Exe in der Projektdatei festlegen. Außerdem müssen Sie sicherstellen, dass Sie MSTest 3.2.0 oder neuer verwenden. Es wird dringend empfohlen, auf die neueste verfügbare MSTest-Version zu aktualisieren.

Betrachten Sie die folgende Beispielprojektdatei:

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

Tipp

Um sicherzustellen, dass alle Testprojekte in Ihrer Lösung den MSTest-Runner verwenden, legen Sie die eigenschaften EnableMSTestRunner und TestingPlatformDotnetTestSupport in Directory.Build.props Datei anstelle einzelner Projektdateien fest.

Konfigurationen und Filter

.runsettings

Microsoft.Testing.Platform unterstützt den runsettings über die Befehlszeilenoption --settings. Die vollständige Liste der unterstützten MSTest-Einträge finden Sie unter Konfigurieren von MSTest: Ausführungseinstellungen. Die folgenden Befehle zeigen verschiedene Verwendungsbeispiele.

Verwenden von dotnet run:

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

Verwenden von dotnet exec:

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

Oder

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

Mit der ausführbaren Datei:

Contoso.MyTests.exe --settings config.runsettings

Testfilter

Sie können die Tests nahtlos mit der Befehlszeilenoption --filter. Die folgenden Befehle zeigen einige Beispiele.

Verwenden von dotnet run:

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

Verwenden von dotnet exec:

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

Oder

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

Mit der ausführbaren Datei:

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