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 (Vorschauversion)
Hinweis
Der Visual Studio-Test-Explorer unterstützt das Microsoft.Testing.Platform-Protokoll in den Vorschauversionen ab Version 17.10. 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.