Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft. Testing.Platform (MTP) ist eine einfache und tragbare Alternative zu VSTest für die Ausführung von Tests in allen Kontexten, einschließlich ci-Pipelines (Continuous Integration), CLI, Visual Studio Test Explorer und VS Code Test Explorer. MTP ist direkt in Ihre Testprojekte eingebettet, und es gibt keine anderen App-Abhängigkeiten, wie z. B. vstest.console oder dotnet test, die erforderlich sind, um Ihre Tests auszuführen.
Tipp
Wenn Sie Hilfe bei der Auswahl zwischen VSTest und MTP benötigen, beginnen Sie mit der Übersicht über Testplattformen.
Verwenden Sie diesen Artikel, wenn Sie sich bereits für die Verwendung von MTP entschieden haben und ihr Modell, seine Funktionen und das Betriebsverhalten verstehen möchten.
MTP ist Open Source. Sie finden den code Microsoft.Testing.Platform im Repository microsoft/testfx GitHub.
Beginnen Sie hier
Verwenden Sie den folgenden Pfad, basierend auf dem, was Sie als Nächstes benötigen:
- Ausführen und Debuggen von Tests über CLI, IDE oder CI: Ausführen und Debuggen von Tests
- Grundlegendes zum Plattformverhalten in CLI: Testen mit
dotnet test - Plattform- und Erweiterungs-CLI-Switches an einer zentralen Stelle finden: Referenz zu MTP CLI-Optionen
- Konfigurieren von Framework-Läufern: Ausführen von Tests mit MSTest - oder MTP-Unterstützung in NUnit (NUnit runner)
- Migrieren eines vorhandenen VSTest-Setups: Migrieren von VSTest zu MTP
- Hinzufügen von Diagnosen, Abdeckung und Berichterstellung: MTP-Features
- Erstellen Sie Ihre eigene Erweiterung: MTP-Architektur, Erweiterungspunkte und Dienste
MTP-Säulen
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. Während es ein hohes Maß an Kompatibilität zwischen dem .NET Framework und dem .NET Core/.NET gibt, haben einige wichtige Features wie das Plugin-System und die neuen möglichen Formfaktoren von .NET Kompilierungen die Entwicklung oder vollständige Unterstützung des neuen Laufzeitfeatures mit der aktuellen VSTest-PlattformArchitektur erschwert.
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 Laufzeit verwendet nicht Reflection oder andere dynamische .NET-Laufzeitfunktionen, um eine Testausführung zu koordinieren.
Laufzeittransparenz: Die Testlaufzeit stört den Testframeworkcode nicht, erstellt keine isolierten Kontexte wie
AppDomainoderAssemblyLoadContext, 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.
Zero-Abhängigkeiten: Der Kern der Plattform ist eine einzelne .NET Assembly,
Microsoft.Testing.Platform.dll, die keine anderen Abhängigkeiten als die unterstützten Laufzeiten aufweist.Hostable: Die Testlaufzeit kann in einer beliebigen .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ützung aller .NET-Formfaktoren: Unterstützung aktueller und zukünftiger .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 ist darauf ausgelegt, einen Testlauf zu "orchestrieren", anstatt Implementierungsdetails dazu bereitzustellen, wie es durchgeführt werden soll.
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
- MSTest. In MSTest erfolgt die Unterstützung von MTP über MSTest runner.
- NUnit. In NUnit erfolgt die Unterstützung von MTP über NUnit runner.
- xUnit.net. Weitere Informationen finden Sie unter Microsoft Testing Platform (xUnit.net v3) und Microsoft Testing Platform (xUnit.net v2) aus der xUnit.net Dokumentation.
- TUnit: vollständig auf MTP aufgebaut, weitere Informationen finden Sie in der TUnit-Dokumentation.
Unterstützte Zielframeworks
MTP 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 Laufzeiten 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 Run- und Debugtests.
Optionen
Eine vollständige Liste der Plattform- und Erweiterungs-Befehlszeilenoptionen finden Sie in der MTP CLI-Optionsreferenz.
MSBuild-Integration
Das NuGet-Paket Microsoft. Testing.Platform.MSBuild bietet verschiedene Integrationen für MTP mit MSBuild:
- Unterstützung für
dotnet testWeitere Informationen finden Sie unter "Testen mit dotnet test". - Unterstützung für
ProjectCapabilityerforderlich fürVisual StudioundVisual Studio CodeTest Explorers. - 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 project, das auf eine andere project verweist, die auf dieses Paket verweist, verhält sich so, als ob es auf das Paket verweist) und kann über die IsTestingPlatformApplication MSBuild-Eigenschaft deaktiviert werden.