Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Dieser Leitfaden unterstützt Benutzer beim Upgrade ihrer MSTest-Projekte von MSTest v1 auf MSTest v3. MSTest v3 führt wichtige neue Features, Optimierungen und einige wichtige Änderungen ein, um die Zuverlässigkeit, Ausführungsgeschwindigkeit und Kompatibilität mit modernen .NET Frameworks zu verbessern.
Wer ist davon betroffen?
Dieses Handbuch ist für Projekte vorgesehen, die derzeit .NET Framework-Projekte mit MSTest v1 über eine der folgenden Methoden verwenden:
-
Assemblyverweise: Projekte, die direkt auf
Microsoft.VisualStudio.QualityTools.UnitTestFramework.dllverweisen. -
NuGet-Pakete: Projekte mit
MSTest.TestFrameworkNuGet-Paket mit Version 1.0.0-1.4.0.
Wenn Ihr Projekt auf MSTest für Komponententests basiert und die oben genannten Verweise enthält, profitiert es von den Verbesserungen in MSTest v3 und erfordert Anpassungen, die in diesem Handbuch beschrieben sind.
Warum zu MSTest v3 migrieren?
Auch wenn Sie mit Ihrem aktuellen MSTest-Setup zufrieden sind, entsperrt das Upgrade auf MSTest v3 erhebliche Vorteile, die sowohl die Qualität als auch die zukünftige Bereitschaft Ihrer Tests verbessern. Deshalb kann der Umstieg jetzt ein wertvoller Schritt nach vorne sein:
Erweiterte Sicherheit: MSTest v1 hat bekannte Sicherheitsrisiken. Mit MSTest v3 haben wir umfangreiche Sicherheitsverbesserungen implementiert, um Ihre Testumgebung zu schützen.
Sofortige Leistungssteigerungen: MSTest v3 reduziert die Testausführungszeit erheblich und optimiert die Ressourcennutzung. Dies ist besonders vorteilhaft bei CI/CD-Pipelines, bei denen schnellere Tests Bereitstellungszyklen verkürzen und Infrastrukturkosten senken können.
Zukunftssichere Tests: MSTest v3 bietet robuste Unterstützung für moderne .NET-Versionen, einschließlich .NET 8 und zukünftige Iterationen sowie plattformübergreifende Kompatibilität. Dies bedeutet, dass Ihre Tests anpassungsfähiger und bereit für Upgrades sind und die technische Verschuldung veralteter Testframeworks vermeiden.
Erhöhte Codezuverlässigkeit mit neuen Analyzern: Die in MSTest v3 integrierten Code-Analyzer erzwingen bewährte Methoden, helfen Probleme frühzeitig zu erkennen und fördern saubereren, besser wartbaren Testcode.
Proaktive Problemerkennung: Die Analysegeräte bieten Echtzeitfeedback, schlagen Verbesserungen vor und kennzeichnen potenzielle Probleme, während Sie Ihre Tests schreiben.
Stärkere typsichere Zusicherungen: Durch das Ersetzen von mehrdeutigen Überladungen erzwingt MSTest v3 typsichere Zusicherungen, reduziert das Risiko eines falschen Testverhaltens und macht Tests zuverlässiger.
Sauberer Code, weniger Wartung: Indem Sie Ihre Tests an MSTest-Standards und bewährten Methoden ausrichten, hilft IHNEN MSTest v3 dabei, eine übersichtlichere, besser verwaltbare Codebasis aufrechtzuerhalten, die technische Schulden im Laufe der Zeit zu reduzieren.
Größere Flexibilität und Erweiterbarkeit: MSTest v3 unterstützt erweiterte Testszenarien, einschließlich dynamischer Datenquellen und paralleler Ausführung in der Assembly. Diese Flexibilität ermöglicht anspruchsvollere Testansätze und beschleunigt Testsuiten ohne komplexe Konfigurationen.
Durch das Upgrade richten Sie Ihre Tests so ein, dass sie schneller, zuverlässiger und anpassungsfähiger für zukünftige .NET-Entwicklungen sind, Ihr Projekt langfristig erfolgreich positionieren und die Wartung vereinfachen.
Tipp
Nach der Migration zu MSTest v3 sollten Sie einen weiteren Schritt unternehmen und zu MSTest v4 migrieren. Weitere Informationen finden Sie unter Migrieren von MSTest v3 zu v4.
Schritte bei der Migration
1. Assemblyverweis entfernen
Für Projekte, die MSTest v1 über Assemblyverweise verwenden, gibt es einen Verweis auf die folgende DLL:
Microsoft.VisualStudio.QualityTools.UnitTestFramework
In Projekten im Nicht-SDK-Stil werden diese Verweise häufig über Visual Studio hinzugefügt, anstatt den XML-Code direkt zu bearbeiten. So entfernen Sie diese Verweise mithilfe der Visual Studio-GUI:
Öffnen Sie Projektmappen-Explorer in Visual Studio.
Erweitern Sie den Projektknoten im Projekt, das MSTest verwendet.
Suchen Sie den Ordner "Verweise " im Projekt.
Suchen Sie im Ordner "Verweise " die MSTest-DLL-Verweise, und wählen Sie sie aus .
Microsoft.VisualStudio.QualityTools.UnitTestFrameworkKlicken Sie mit der rechten Maustaste auf die ausgewählten Verweise, und wählen Sie "Aus dem Kontextmenü entfernen" aus.
Speichern Sie das Projekt , um Änderungen anzuwenden.
2. Aktualisieren Ihres Projekts
Sie können Ihr Projekt auf eine von zwei Arten auf MSTest v3 aktualisieren:
Updatepakete: Wenn Sie Über NuGet-Paketverweise auf msTest.TestFramework und msTest.TestAdapter verfügen, aktualisieren Sie sie mithilfe der NuGet-Paket-Manager in Visual Studio oder indem Sie den folgenden Befehl in der NuGet-Paket-Manager-Konsole ausführen:
Update-Package MSTest.TestFramework -Version 3.11.1 Update-Package MSTest.TestAdapter -Version 3.11.1Oder installieren Sie MSTest-Paket: Installieren Sie das neueste MSTest-Paket mit dem NuGet-Paket-Manager in Visual Studio oder indem Sie den folgenden Befehl in der NuGet-Paket-Manager-Konsole ausführen:
Install-Package MSTest -Version 3.11.1Oder aktualisieren Sie die Projektdatei direkt (für SDK-Formatprojekte): Aktualisieren Sie Ihre
.csprojDatei, um die MSTest SDK-Version anzugeben.<Project Sdk="MSTest.Sdk/3.11.1"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> </PropertyGroup> </Project>
Wählen Sie die Option aus, die am besten zu Ihrem Projektsetup passt. Beide Methoden stellen sicher, dass ihr Projekt auf die Verwendung von MSTest v3 aktualisiert wird.
3. Aktualisieren Des Codes
Assert.AreEqual/AreNotEqual oder Assert.AreSame/AreNotSame (mit Objekt) Wenn eine dieser Assertionen Fehler verursacht, wird empfohlen, zu überprüfen, ob die verglichenen Typen kompatibel sind. Wenn sie das sind, fügen Sie gegebenenfalls explizite generische Typen hinzu, um das Problem zu beheben.
Verwenden von Generika:
Assert.AreEqual<customObject>(expectedObject, actualObject); Assert.AreNotEqual<customObject>(expectedObject, actualObject);.
Bereinigung: Verwenden Sie
TestCleanupMethoden oder das Muster für dieDisposeBereinigung.RunSettings: Die
.testsettingsDatei wird nicht mehr unterstützt, was bedeutet, dass<LegacySettings>sie auch nicht mehr verfügbar ist. Verwenden Sie ".runsettings " für die Testkonfiguration.
Neue Features in MSTest v3
- Verbesserte Standardwerte für Testprojekte
- Vereinfachte Einrichtung und Verwendung
- Erweiterte Erweiterbarkeit des MSTest-Runners
- Neue Roslyn-basierte Codeanalysatoren für eine verbesserte Testentwicklung
- Unterstützung für WinUI-Anwendungen
- Parallele Ausführung in der Assembly
- Dynamische Datenquellen für datengesteuerte Tests
Als veraltet markierte Funktionen
- Unterstützung wurde eingestellt für:
- .NET Framework 4.5 (verwenden Sie .NET 4.6.2 oder höher)
- .NET Standard 1.0 (verwenden Sie .NET Standard 2.0)
- UWP-Versionen vor 16299
- WinUI-Versionen vor 18362
- .NET 5 (.NET Core 3.1 oder .NET 6 verwenden)
Breaking Changes und entfernte APIs
Assertionsüberladungen
Wenn AreEqual-, AreNotEqual-, AreSame- oder AreNotSame-Assertionen Fehler verursachen, wird empfohlen, zu überprüfen, ob die verglichenen Typen kompatibel sind. Wenn sie das sind, fügen Sie gegebenenfalls explizite generische Typen hinzu, um das Problem zu beheben.
DataRowAttribute-Updates
Die DataRowAttribute-Konstruktoren in MSTest v3 wurden vereinfacht, um den Typabgleich für Parameter zu erzwingen. Dies bedeutet, dass Sie Werte in DataRow angeben müssen, die genau den Typen der Methodenparameter entsprechen.
Beispiel:
[TestMethod]
[DataRow(1, "test")] // Correct: matches parameter types (int, string)
public void MyTestMethod(int number, string text) { ... }
In Fällen, in denen Typen nicht exakt übereinstimmen, löst MSTest v3 jetzt einen Fehler aus, anstatt eine Konvertierung zu versuchen.
Timeouteinstellungen
In MSTest v3 wurde die Behandlung von Timeout Einstellungen standardisiert, um ein einheitliches Verhalten in verschiedenen .NET-Umgebungen sicherzustellen. Diese Änderung kann sich auf Tests auswirken, die auf bestimmten Timeoutwerten basieren, insbesondere, wenn diese Tests asynchron sind oder unter verschiedenen Frameworks ausgeführt werden.
- In MSTest v1 oder v2 wurden bestimmte Timeouteinstellungen je nach Framework möglicherweise unterschiedlich interpretiert (z. B. .NET Framework vs. .NET Core).
- MSTest v3 erzwingt ein konsistentes Timeoutverhalten. Dies kann bedeuten, dass Tests, die mit Timeouts in früheren Versionen konfiguriert sind, fehlschlagen oder sich anders verhalten, wenn die Timeoutwerte unter dem neuen Standard zu kurz sind.
Was dies bedeutet:
Tests mit Timeouts können Anpassungen erfordern: Wenn Ihre Tests über ein
TimeoutAttribut mit bestimmten Daueren verfügen, überprüfen Sie, ob diese Werte den Test weiterhin unter MSTest v3 abschließen können. Tests, die zuvor mit einem bestimmten Timeout bestanden wurden, benötigen möglicherweise einen höheren oder niedrigeren Timeoutwert, um unter den neuen Regeln ordnungsgemäß zu funktionieren.Vereinheitlichte Timeout-Behandlung: Die vereinheitlichte Timeout-Behandlung von MSTest v3 macht Timeouts vorhersehbarer, erfordert jedoch die Überprüfung und möglicherweise Aktualisierung von
TimeoutWerten in älteren Tests.
Beispiel:
// Old (v1/v2) - Timeout was sometimes interpreted inconsistently
[TestMethod]
[Timeout(2000)] // Timeout in milliseconds
public void TestMethod() { ... }
// New (v3) - Unified handling of timeout
[TestMethod]
[Timeout(2000)] // Verify this value still works under MSTest v3
public async Task TestMethod() { ... }
Konfigurationsänderungen
Stellen Sie sicher, dass .runsettings Dateien mit msTest v3-Syntax und -Struktur übereinstimmen.
Parallele Ausführung und Leistungsoptimierung
Konfigurieren Sie die parallele Ausführung in .runsettings , um die Leistung zu verbessern.
Beispiel:
<RunSettings>
<RunConfiguration>
<MaxCpuCount>-1</MaxCpuCount> <!-- Uses all available processors -->
</RunConfiguration>
</RunSettings>
Verbesserte Ressourcennutzung
MSTest v3 optimiert die Ressourcenverwaltung, was zu einer geringeren Speicherauslastung und einer besseren CPU-Effizienz führt.
Behandeln veralteter Attribute und Migrieren von benutzerdefinierten Erweiterungen
Überprüfen Sie veraltete Attribute, und ersetzen Sie sie nach Möglichkeit durch MSTest v3-Alternativen.
Codeanalyse und bewährte Methoden
MSTest v3 enthält integrierte Codeanalysatoren für bewährte Methoden, vermeidung von Konfigurationsfallfällen und die ordnungsgemäße Verwendung von MSTest-Attributen und -Einstellungen. Dies ist automatisch verfügbar, wenn Sie das MSTest-Paket oder MSTest.Sdk verwenden, und ab MSTest 3.7 ist MSTest.Analyzers eine transitive Abhängigkeit von MSTest.TestFramework.