Freigeben über


Übersicht über Microsoft.Testing.Platform

Microsoft.Testing.Platform ist eine einfache und tragbare Alternative zu VSTest- für die Ausführung von Tests in allen Kontexten, einschließlich fortlaufender Integrationspipelinen, CLI, Visual Studio Test Explorer und VS Code Test Explorer. Microsoft.Testing.Platform ist direkt in Ihre Testprojekte eingebettet, und es sind keine anderen Apps wie vstest.console oder dotnet test erforderlich, um Ihre Tests auszuführen.

Tipp

Wenn Sie Hilfe bei der Auswahl zwischen VSTest und Microsoft.Testing.Platform benötigen, beginnen Sie mit der Übersicht über Testplattformen.

Verwenden Sie diesen Artikel, wenn Sie sich bereits für die Verwendung von Microsoft.Testing.Platform entschieden haben und das Modell, die Funktionen und das Betriebsverhalten verstehen möchten.

Microsoft.Testing.Platform ist Open Source. Sie finden Microsoft.Testing.Platform Code im microsoft/testfx GitHub-Repository.

Beginnen Sie hier

Verwenden Sie den folgenden Pfad, basierend auf dem, was Sie als Nächstes benötigen:

Microsoft.Testing.Platform-Pfeiler

Diese neue Testplattform basiert auf der Erfahrung des .NET Developer Experience Testing-Teams und zielt darauf ab, die Herausforderungen zu beheben, die seit der Veröffentlichung von .NET Core im Jahr 2016 aufgetreten sind. Obwohl es ein hohes Maß an Kompatibilität zwischen .NET Framework und .NET Core/.NET gibt, haben einige wichtige Features wie das Plug-In-System und die neuen möglichen Formfaktoren von .NET-Kompilierungen es komplex gemacht, das neue Laufzeitfeature mit der aktuellen VSTest-Plattformarchitektur zu entwickeln oder vollständig zu unterstützen.

Die wichtigsten Faktoren für die Entwicklung der neuen Testplattform sind im Folgenden aufgeführt:

  • Determinismus: Sicherstellen, dass das Ausführen der gleichen Tests in verschiedenen Kontexten (lokal, CI) dasselbe Ergebnis erzeugt. Die neue Laufzeitumgebung basiert nicht auf Reflexion oder anderen dynamischen Funktionen der .NET-Laufzeitumgebung, um den Ablauf eines Tests zu koordinieren.

  • Laufzeittransparenz: Die Testlaufzeit stört den Testframeworkcode nicht, erstellt keine isolierten Kontexte wie AppDomain oder AssemblyLoadContext, und es verwendet keine Spiegelung oder benutzerdefinierte Assemblylöser.

  • Kompilierungszeitregistrierung von Erweiterungen: Erweiterungen, z. B. Testframeworks und In-of-Process-Erweiterungen, werden während der Kompilierungszeit registriert, um die Determinität zu gewährleisten und die Erkennung von Inkonsistenzen zu erleichtern.

  • Nullabhängigkeiten: Der Kern der Plattform ist eine einzelne .NET-Assembly, Microsoft.Testing.Platform.dlldie keine anderen Abhängigkeiten als die unterstützten Laufzeiten aufweist.

  • Hostbar: Die Testlaufzeit kann in jeder .NET-Anwendung gehostet werden. Während eine Konsolenanwendung häufig zum Ausführen von Tests verwendet wird, können Sie eine Testanwendung in jeder Art von .NET-Anwendung erstellen. Auf diese Weise können Sie Tests in speziellen Kontexten ausführen, z. B. Geräte oder Browser, bei denen es einschränkungen gibt.

  • Unterstützen Sie alle .NET-Formfaktoren: Unterstützen Sie aktuelle und zukünftige .NET-Formfaktoren, einschließlich Native AOT.

  • Performant: Finden Sie das richtige Gleichgewicht zwischen Features und Erweiterungspunkten, um zu vermeiden, dass die Laufzeit mit nicht grundlegendem Code aufgebläht wird. Die neue Testplattform dient dazu, einen Testlauf zu "koordinieren", anstatt Implementierungsdetails zur Vorgehensweise bereitzustellen.

  • Erweiterbar genug: Die neue Plattform basiert auf Erweiterbarkeitspunkten, um eine maximale Anpassung der Laufzeitausführung zu ermöglichen. Sie können den Testprozesshost konfigurieren, den Testprozess beobachten und Informationen aus dem Testframework innerhalb des Testhostprozesses nutzen.

  • Bereitstellung eines einzelnen Moduls: Das Hostierbarkeitsfeature ermöglicht ein einzelnes Modulbereitstellungsmodell, bei dem ein einziges Kompilierungsergebnis verwendet werden kann, um alle Erweiterbarkeitspunkte zu unterstützen, sowohl out-of-process als auch in-process, ohne dass verschiedene ausführbare Module ausgeliefert werden müssen.

Unterstützte Testframeworks

Unterstützte Zielframeworks

Microsoft.Testing.Platform unterstützt .NET (.NET 8 und höher), .NET Framework (Versionen 4.6.2 und höher) und zielt auf NETStandard 2.0 ab, um maximale Kompatibilität mit anderen Runtimes zu gewährleisten.

Ausführen und Debuggen von Tests

Ausführliche Anleitungen zum Ausführen und Debuggen von MTP-Testprojekten von CLI, Visual Studio, Visual Studio Code und CI-Pipelines finden Sie unter Ausführen und Debuggen von Tests.

Optionen

Die vollständige Liste der Befehlszeilenoptionen für Plattform und Erweiterung finden Sie unter Microsoft.Testing.Platform CLI options reference.

MSBuild-Integration

The NuGet package Microsoft.Testing.Platform.MSBuild bietet verschiedene Integrationen für Microsoft.Testing.Platform mit MSBuild:

  • Unterstützung für dotnet test Weitere Informationen finden Sie unter "Testen mit dotnet test".
  • Unterstützung für ProjectCapability erforderlich für die Test-Explorer Visual Studio und Visual Studio Code.
  • Automatische Generierung des Einstiegspunkts (Main-Methode).
  • Automatische Generierung der Konfigurationsdatei.
  • Automatische Erkennung und Registrierung installierter Erweiterungspakete.

Wenn dieses Paket aktiv ist (der Standardwert für MSTest, NUnit und xUnit), ist lediglich die Installation eines NuGet-Erweiterungspakets erforderlich, denn Erweiterungen werden automatisch registriert, ohne dass Codeänderungen notwendig sind. Wenn Sie den automatisch generierten Einstiegspunkt durch Festlegen <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>deaktivieren, müssen Sie Erweiterungen manuell in Ihrer Main Methode registrieren. Jede Erweiterungsseite dokumentiert ihren manuellen Registrierungsanruf.

Hinweis

Diese Integration funktioniert transitiv (ein Projekt, das auf ein anderes Projekt verweist, das auf dieses Paket verweist, verhält sich so, als ob es auf das Paket verweist) und kann über die IsTestingPlatformApplication-MSBuild-Eigenschaft deaktiviert werden.

Siehe auch