Freigeben über


Vergleichen von Microsoft.Testing.Platform und VSTest

Microsoft.Testing.Platform ist eine einfache und portierbare Alternative zu VSTest zum Ausführen von Tests in einer Befehlszeile, in CI-Pipelines (Continuous Integration), in der CLI, im Visual Studio-Test-Explorer und in Visual Studio Code. In diesem Artikel lernen Sie die wichtigsten Unterschiede zwischen Microsoft.Testing.Platform und VSTest kennen.

Unterschiede bei der Testausführung

Tests werden je nach Runner auf unterschiedliche Weise ausgeführt.

Ausführen von VSTest-Tests

VSTest wird mit Visual Studio, dem .NET SDK und als eigenständiges Tool im NuGet-Paket Microsoft.TestPlatform ausgeliefert. VSTest verwendet eine ausführbare Runner-Datei namens vstest.console.exe zum Ausführen von Tests, die direkt oder über dotnet test verwendet werden kann.

Ausführen von Microsoft.Testing.Platform-Tests

Microsoft.Testing.Platform ist direkt in Ihr Testprojekt eingebettet und enthält keine zusätzlichen ausführbare Dateien. Wenn Sie die ausführbare Datei des Projekts ausführen, werden die Tests ausgeführt. Weitere Informationen zum Ausführen von Microsoft.Testing.Platform-Tests finden Sie unter Übersicht über Microsoft.Testing.Platform: Ausführen und Debuggen von Tests.

Namespaces und NuGet-Pakete

Um sich mit Microsoft.Testing.Platform und VSTest vertraut zu machen, ist es hilfreich, die jeweiligen verwendeten Namespaces und NuGet-Pakete zu verstehen.

VSTest-Namespaces

VSTest ist eine Sammlung von Testtools, die auch als Testplattform bezeichnet werden. Der VSTest-Quellcode ist Open-Source und im GitHub-Repository microsoft/vstest verfügbar. Der Code verwendet den Namespace Microsoft.TestPlatform.*.

VSTest ist erweiterbar und allgemeine Typen werden im NuGet-Paket Microsoft.TestPlatform.ObjectModel platziert.

Microsoft.Testing.Platform-Namespaces

Microsoft.Testing.Platform basiert auf dem Microsoft.Testing.Platform-NuGet-Paket und anderen Bibliotheken im Microsoft.Testing.*-Namespace. Wie VSTest ist Microsoft.Testing.Platform Open-Source und verfügt über ein GitHub-Repository microsoft/testfx.

Kommunikationsprotokoll

Hinweis

Der Visual Studio Test Explorer unterstützt ab 17.12 das Protokoll "Microsoft.Testing.Platform". Wenn Sie Ihre Tests mit früheren Versionen von Visual Studio ausführen/debuggen, verwendet der Test-Explorer vstest.console.exe und das alte Protokoll, um diese Tests auszuführen.

Microsoft.Testing.Platform verwendet ein auf JSON-RPC basierendes Protokoll für das Kommunizieren zwischen Visual Studio und dem Testausführungsprozess. Das Protokoll ist im GitHub-Repository für MSTest dokumentiert.

VSTest verwendet auch ein JSON-basiertes Kommunikationsprotokoll, es ist jedoch nicht JSON-RPC-basiert.

Deaktivieren des neuen Protokolls

Um die Verwendung des neuen Protokolls im Test-Explorer zu deaktivieren, können Sie Ihr Projekt bearbeiten und die folgende Eigenschaft hinzufügen: <DisableTestingPlatformServerCapability>true</DisableTestingPlatformServerCapability>.

Sie können auch zu den Optionen für Vorschaufeatures in Visual Studio wechseln und die Option "Testplattform-Servermodus verwenden" deaktivieren.

Ausführbare Dateien

Im Lieferumfang von VSTest sind mehrere ausführbare Dateien enthalten, insbesondere vstest.console.exe, testhost.exe und datacollector.exe. MSTest ist dagegen direkt in Ihr Testprojekt eingebettet und enthält keine anderen ausführbaren Dateien. Die ausführbare Datei, zu der Ihr Testprojekt kompiliert wird, dient als Host für alle Testtools und führt alle Aufgaben aus, die für die Durchführung von Tests erforderlich sind.

Migrieren von VSTest

Zusätzlich zu den für Ihr Testframework spezifischen Schritten müssen Sie Ihre Testinfrastruktur aktualisieren, um Microsoft.Testing.Platformzu berücksichtigen.

dotnet test

Befehlszeilenoptionen von dotnet test sind in zwei Kategorien unterteilt: Erstellen sie verwandte Argumente und testen Sie verwandte Argumente.

Die buildbezogenen Argumente werden an den befehl dotnet build übergeben und müssen daher nicht für die neue Plattform aktualisiert werden. Buildbezogene Argumente sind unten aufgeführt:

  • -a|--arch <ARCHITECTURE>
  • --artifacts-path <ARTIFACTS_DIR>
  • -c|--configuration <CONFIGURATION>
  • -f|--framework <FRAMEWORK>
  • -e|--environment <NAME="VALUE">
  • --interactive
  • --no-build
  • --nologo
  • --no-restore
  • -o|--output <OUTPUT_DIRECTORY>
  • --os <OS>
  • -r|--runtime <RUNTIME_IDENTIFIER>
  • -v|--verbosity <LEVEL>

Die testbezogenen Argumente sind VSTest-spezifisch und müssen daher so transformiert werden, dass sie mit der neuen Plattform übereinstimmen. Die folgende Tabelle zeigt die Zuordnung zwischen den VSTest-Argumenten und der neuen Plattform:

VSTest-Argument Neues Plattformargument
--test-adapter-path <ADAPTER_PATH> Nicht unterstützt
--blame Nicht unterstützt
--blame-crash --crashdump erfordert Absturzbild-Erweiterung
--blame-crash-dump-type <DUMP_TYPE> --crashdump-type erfordert Absturzbild-Erweiterung
--blame-crash-collect-always Nicht unterstützt
--blame-hang --hangdump erfordert Stillstandabbild-Erweiterung
--blame-hang-dump-type <DUMP_TYPE> --hangdump-type erfordert Stillstandabbild-Erweiterung
--blame-hang-timeout <TIMESPAN> --hangdump-timeout erfordert Stillstandabbild-Erweiterung
--collect <DATA_COLLECTOR_NAME> Hängt vom Datensammler ab
-d\|--diag <LOG_FILE> --diagnostic
--filter <EXPRESSION> Abhängig vom ausgewählten Testframework
-l\|--logger <LOGGER> Hängt von der Protokollierung ab
--results-directory <RESULTS_DIR> --results-directory <RESULTS_DIR>
-s\|--settings <SETTINGS_FILE> Abhängig vom ausgewählten Testframework
-t\|--list-tests --list-tests
-- <RunSettings arguments> --test-parameter (bereitgestellt von VSTestBridge)

Wichtig

Bevor Sie Microsoft.Testing.Platform Argumente angeben, müssen Sie -- hinzufügen, um die dotnet test Argumente von den neuen Plattformargumenten zu trennen. Beispiel: dotnet test --no-build -- --list-tests.

vstest.console.exe

Wenn Sie vstest.console.exe direkt verwenden, empfehlen wir, sie durch den Befehl dotnet test zu ersetzen.

Test-Explorer

Wenn Sie Visual Studio oder Visual Studio Code Test Explorer verwenden, müssen Sie möglicherweise die Unterstützung für die neue Testplattform aktivieren.

Visual Studio

Visual Studio Test Explorer unterstützt die neue Testplattform ab Version 17.14. Wenn Sie eine frühere Version verwenden, müssen Sie Möglicherweise Ihr Visual Studio auf die neueste Version aktualisieren.

Visual Studio Code

Visual Studio Code Test Explorer unterstützt die neue Testplattform ab Version X.

Azure DevOps

Wenn Sie Azure DevOps-Aufgaben verwenden, müssen Sie Ihre Pipeline möglicherweise aktualisieren, um die neue Testplattform zu verwenden.

VSTest-Aufgabe

Wenn Sie die VSTest-Aufgabe in Azure DevOps verwenden, können Sie sie durch die .NET Core-Aufgabeersetzen.

.NET Core-Aufgabe

Wenn Sie die .NET Core-Aufgabeverwenden, sind keine Änderungen erforderlich.