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)

Warnung

Kombinieren Sie vsTest- und Microsoft.Testing.Platform-Testprojekte nicht in derselben Repositoryausführungskonfiguration.

Wählen Sie eine Plattform für Ihren Repositorytestworkflow aus, und konfigurieren Sie Testprojekte, CI und Tools konsistent für diese Plattform.

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 müssen .NET-Tests und non-.NET Testadapter (z. B. JavaScript- oder C++-Adapter) kombinieren. VSTest VSTest unterstützt Szenarien mit gemischten Sprachenadaptern, während MTP ist. NET-spezifisch.
Sie möchten, dass sich Testprojekte wie normale ausführbare Dateien verhalten (dotnet run, direkt ausführbare Programme ausführen, dotnet watch, und F5-Abläufe des Startprojekts). Microsoft.Testing.Platform MTP ist auf Ausführung fokussiert, sodass Test-Apps wie .NET-Standard-Apps in lokalen und CI-Workflows ausgeführt werden.
Sie verlassen sich auf langjährige Integrationen in Microsoft- und Nicht-Microsoft-Tools. VSTest VSTest hat die längste Kompatibilitätsbilanz für bestehende Produkte, Aufgaben und Pipelines.
Sie priorisieren die Reproduzierbarkeit und eine engere Kontrolle des Erweiterungsladevorgangs auf allen Maschinen. Microsoft.Testing.Platform MTP bevorzugt die explizite Registrierung von Erweiterungen zur Build-Zeit, wodurch das geräteabhängige Verhalten von dynamisch erkannten Komponenten reduziert und die Sicherheitsüberprüfung vereinfacht werden kann.
Sie benötigen einen minimalen Kern mit optionalen Features, die Sie pro Umgebung deaktivieren können. Microsoft.Testing.Platform MTP verwendet einen einfachen Kern mit Opt-In-Erweiterungen. Wenn eine Erweiterung nicht unterstützte Abhängigkeiten oder Versionskonflikte in einer bestimmten Umgebung einführt, können Sie diese Erweiterung entfernen oder deaktivieren.
Sie bevorzugen strenge Standardwerte und explizites Verhalten. Microsoft.Testing.Platform MTP bevorzugt die deterministische Ausführung mit expliziten Prüfungen. Zum Beispiel kann es fehlschlagen, wenn keine Tests ausgeführt werden. Es zielt darauf ab, die umgebungsabhängige Variabilität zu verringern und implizite Ermittlungs- und Ausführungsheuristiken zu vermeiden.
Sie bevorzugen weichere, breit abwärtskompatible Standardvorgaben. VSTest VSTest priorisiert kompatibilitätsorientierte Standardwerte für vielfältige, vorhandene Toolketten.
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 in Visual Studio und andere Tools, 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 die .NET-Aufgabe (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).
dotnet test Verhalten Standardmäßiger VSTest-Modus. VSTest-Argumente und -Verhalten gelten. Der systemeigene MTP-Modus ist im .NET 10 SDK und höher verfügbar. Vor .NET 10 SDK wurde MTP im VSTest-Modus mit Einschränkungen (TestingPlatformDotnetTestSupportplus dem zusätzlichen -- Argumenttrennzeichen) ausgeführt.

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

Starten Sie mit Ihrem Testframework

Wenn Sie VSTest auswählen

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

Nächste Schritte