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 MSTest Runner 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.

Execute 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 Version 17.10 das Microsoft.Testing.Platform-Protokoll. 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 den csproj bearbeiten und die TestingPlatformServer-Funktion entfernen.

<ItemGroup>
    <ProjectCapability Remove="TestingPlatformServer" />
</ItemGroup>

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.