Teilen über


Verwenden von Microsoft.Testing.Platform im VSTest-Modus von dotnet test

In diesem Artikel wird die Integration von dotnet test für Microsoft.Testing.Platform erläutert, die von Microsoft.Testing.Platform.MSBuild bereitgestellt wird, wenn sie im VSTest-Modus von dotnet test ausgeführt wird.

Bevor Sie sich mit diesem Artikel befassen, empfiehlt es sich, zuerst Tests mit dotnet-Test zu lesen, was die beiden Modi dotnet test (VSTest und MTP) erläutert.

Standardmäßig verwendet dotnet test VSTest, um Tests auszuführen. Um unterstützung für Microsoft.Testing.Platform in dotnet testzu aktivieren, haben Sie zwei Optionen:

  1. Verwenden Sie dotnet test im VSTest-Modus, und geben Sie die MSBuild-Eigenschaft <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> in Ihrer Projektdatei an.
  2. Verwenden Sie dotnet test im MTP-Modus für eine nativere Unterstützung von MTP in dotnet test, das nur ab dem .NET 10 SDK unterstützt wird.

Beide Optionen werden im Artikel "Testen mit dotnet test" ausführlich erläutert.

Von Bedeutung

Der Rest dieses Artikels ist spezifisch für den VSTest-Modus von dotnet test.

Vorsicht

Ab .NET 10 SDK wird empfohlen, nicht den VSTest-Modus dotnet test zu verwenden, wenn er mit Microsoft.Testing.Platform ausgeführt wird.

Fehler pro Test anzeigen

Standardmäßig werden Testfehler in einer LOG-Datei zusammengefasst, und pro Testprojekt wird ein einzelner Fehler an MSBuild gemeldet.

Wenn Sie Fehler pro fehlgeschlagenem Test anzeigen möchten, geben Sie in der Befehlszeile -p:TestingPlatformShowTestsFailure=true an, oder fügen Sie Ihrer Projektdatei die <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>-Eigenschaft hinzu.

Auf der Kommandozeile:

dotnet test -p:TestingPlatformShowTestsFailure=true

Oder in der Projektdatei:

<Project Sdk="Microsoft.NET.Sdk">

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

    <IsPackable>false</IsPackable>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>

  </PropertyGroup>

  <!-- ... -->

</Project>

Vollständige Plattformausgabe anzeigen

Standardmäßig wird die gesamte Konsolenausgabe, welche die zugrunde liegende ausführbare Testdatei schreibt, vom Benutzer erfasst und ausgeblendet. Dazu gehören Banner, Versionsinformationen und formatierte Testinformationen.

Um diese Informationen zusammen mit der MSBuild-Ausgabe anzuzeigen, verwenden Sie <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>.

Diese Option wirkt sich nicht darauf aus, wie das Testframework die Benutzerausgabe erfasst, die von Console.WriteLine oder auf andere ähnliche Arten in die Konsole ausgegeben wird.

Auf der Kommandozeile:

dotnet test -p:TestingPlatformCaptureOutput=false

Oder in der Projektdatei:

<Project Sdk="Microsoft.NET.Sdk">

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

    <IsPackable>false</IsPackable>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>

  </PropertyGroup>

  <!-- ... -->

</Project>

Von Bedeutung

Alle oben aufgeführten Beispiele fügen in der CSPROJ-Datei Eigenschaften wie EnableMSTestRunner, TestingPlatformDotnetTestSupport und TestingPlatformCaptureOutput hinzu. Sie sollten diese Eigenschaften jedoch unbedingt in Directory.Build.props festlegen. Sie müssen sie dann nicht jeder einzelnen Testprojektdatei hinzufügen und riskieren nicht, ein neues Projekt zu beginnen, bei dem diese Eigenschaften nicht festlegt werden. In diesem Fall könnten Sie eine Lösung erhalten, bei der einige Projekte VSTest verwenden, andere hingegen Microsoft.Testing.Platform. Das würde möglicherweise nicht ordnungsgemäß funktionieren und wird nicht unterstützt.