Freigeben über


Übersicht über Testplattformen für .NET

In .NET sind ein Testframework und eine Testplattform unterschiedliche Komponenten, die zusammenarbeiten, um Tests zu ermitteln und auszuführen.

  • Das Testframework definiert das Testmodell, mit dem Sie schreiben, z. B. MSTest, NUnit, xUnit.net oder TUnit.
  • Die Testplattform führt Tests aus, integriert in IDEs und CLI und stellt gemeinsam genutzte Erweiterungspunkte bereit.

Sie können zwischen zwei Testplattformen wählen:

  • VSTest
  • Microsoft.Testing.Platform (MTP)

Tipp

Wählen Sie für die einfachste Einrichtung eine Plattform für Ihr Repository aus, und konfigurieren Sie Testprojekte, CI und Tools konsistent für diese Plattform. Kombinieren Sie vsTest-basierte und Microsoft.Testing.Platform-basierte .NET Testprojekte nicht in derselben Lösung, oder führen Sie die Konfiguration aus, da dieses Szenario nicht unterstützt wird. Wenn Sie auch nicht .NET Tests ausführen, die von VSTest (z. B. C++- oder JavaScript-Tests) abhängen, führen Sie diese Tests in separaten Konfigurationen von Ihren MTP-basierten .NET Tests aus.

So wählen Sie Ihre Plattform aus

Verwenden Sie die folgenden Szenarien, um schnell auszuwählen.

Anwendungsfall Auswählen Warum
Sie benötigen Native AOT oder Trimming für die Testausführungsszenarien. Microsoft.Testing.Platform MTP unterstützt diese modernen Bereitstellungsszenarien, während VSTest nicht.
Sie erstellen verpackte WinUI- oder UWP-Testprojekte. VSTest Diese Projekttypen werden derzeit nicht von MTP unterstützt.
Sie müssen .NET Tests und nicht .NET Testadapter (z. B. JavaScript- oder C++-Adapter) kombinieren. VSTest VSTest unterstützt Szenarien mit gemischten Sprachenadaptern, während MTP .NET-spezifisch ist.
Sie möchten, dass sich Testprojekte wie normale ausführbare Dateien verhalten (, direkt ausführbare Programme ausführen, , und F5-Abläufe des Startprojekts). Microsoft.Testing.Platform MTP ist darauf ausgelegt, ausführbar zu sein, sodass Test-Apps analog zu Standard-.NET-Apps in lokalen und CI-Workflows ausgeführt werden.
Sie verlassen sich auf langjährige Integrationen über vorhandene Tools hinweg. VSTest VSTest hat die längste Kompatibilitätsbilanz für bestehende Produkte, Aufgaben und Pipelines. MTP-Unterstützung wächst im Ökosystem, aber einige Integrationen können hinter VSTest zurückbleiben.
Sie bevorzugen strenge Standardwerte und explizites Verhalten. Microsoft.Testing.Platform MTP bevorzugt deterministische Ausführung mit einem einfachen, wählbaren Erweiterungsmodell und einer Registrierung zur Bauzeit. Wenn keine Tests ausgeführt werden, kann es beispielsweise fehlschlagen, die umgebungsabhängige Variabilität verringern und das Deaktivieren einzelner Erweiterungen pro Umgebung ermöglichen.
Sie bevorzugen weichere, breit abwärtskompatible Standardvorgaben. VSTest Beide Plattformen kümmern sich um Abwärtskompatibilität. VSTest priorisiert kompatibilitätsorientierte Standardwerte für vielfältige, vorhandene Toolketten, während MTP die Abwärtskompatibilität innerhalb des eigenen Erweiterungsmodells bietet.
Sie werden durch ein VSTest-spezifisches Problem oder Verhalten in Ihrem aktuellen Workflow blockiert. Microsoft.Testing.Platform In vielen Szenarien ist derselbe Workflow aufgrund von Unterschieden bei der Laufzeitmodell- und Erweiterungsarchitektur nicht betroffen, wenn er zu MTP verschoben wird.

Wenn Ihr bestimmter Anwendungsfall nicht aufgeführt ist, sind beide Plattformen gültige Optionen.

Integrations- und Toolunterstützung

Integrationsbereich VSTest Microsoft.Testing.Platform
IDE-Integration Ausgereifte Integration über Visual Studio und andere Tools hinweg, die von VSTest-Protokollen und -Adaptern abhängen. Unterstützt in Visual Studio- und Visual Studio Code-Szenarien mit fortlaufender Integration in Teilen des Ökosystems.
CI und externe Tools Umfassender Support für langjährige Microsoft- und Nicht-Microsoft-Tools und -Aufgaben. In Azure DevOps können Sie entweder die VSTest-Aufgabe (VSTest@3, vstest.console) oder den .NET Vorgang (DotNetCoreCLI@2, dotnet test) verwenden. Funktioniert in CI- und modernen .NET-Workflows, aber einige Drittanbieterintegrationen liegen möglicherweise noch hinter VSTest zurück. Verwenden Sie in Azure DevOps die .NET Aufgabe (DotNetCoreCLI@2, dotnet test).
Verhalten Standardmäßiger VSTest-Modus. VSTest-Argumente und -Verhalten gelten. Der native MTP-Modus ist im .NET 10 SDK und höher verfügbar.

Ausführliche Informationen zu Modi und Argumenten finden Sie unter Testen mit .

Starten Sie mit Ihrem Testframework

Wenn Sie VSTest auswählen

  • MSTest: Ausführen von Tests mit MSTest
  • NUnit: NUnit und Microsoft.Testing.Platform
  • xUnit.net: Erste Schritte mit xUnit.net
  • TUnit: Wird für VSTest nicht unterstützt. Verwenden Sie Microsoft.Testing.Platform.

Wenn Sie "Microsoft.Testing.Platform" auswählen

  • MSTest: Ausführen von Tests mit MSTest
  • NUnit: Microsoft.Testing.Platform-Support in NUnit (NUnit Runner)
  • xUnit.net: Microsoft Testing Platform (xUnit.net v3)
  • TUnit: TUnit-Dokumentation

Nächste Schritte

  • Lernen Sie MTP-Konzepte kennen: Übersicht über Microsoft.Testing.Platform
  • Verständnis von VSTest-Optionen: VSTest-Optionen
  • Migrieren von VSTest: Migrieren von VSTest zu Microsoft.Testing.Platform
  • Hinzufügen von Funktionen: Microsoft.Testing.Platform-Features