Freigeben über


MSTest-Übersicht

MSTest, Microsoft Testing Framework, ist ein vollständig unterstütztes, open-source- und plattformübergreifendes Testframework für .NET-Anwendungen. Es ermöglicht Ihnen, Tests zu schreiben und auszuführen, und stellt Testsuiten mit Integration in Visual Studio und Visual Studio Code Test Explorers, die .NET CLI und viele CI-Pipelines bereit.

MSTest wird auf GitHub gehostet und funktioniert mit allen unterstützten .NET-Zielen.

Wichtigste Funktionen

MSTest bietet umfassende Testfunktionen:

  • Datengesteuerte Tests: Führen Sie Tests mit mehreren Eingaben mithilfe DataRowvon , DynamicDataund externen Datenquellen aus.
  • Testlebenszyklusverwaltung: Einrichten und Bereinigen auf Assembly-, Klassen- und Testebenen.
  • Parallele Ausführung: Führen Sie Tests gleichzeitig aus, um die Ausführungszeit zu reduzieren.
  • Testorganisation: Kategorisieren, Priorisieren und Filtern von Tests mit Metadatenattributen.
  • Code-Analysatoren: Erkennung häufiger Probleme und Erzwingen bewährter Methoden während der Kompilierungszeit.
  • Assertionen: Umfassende Assertionsmethoden zum Validieren von Ergebnissen.

Unterstützte Plattformen

MSTest unterstützt eine vielzahl von .NET-Plattformen und Zielframeworks. In der folgenden Tabelle sind Plattformunterstützung und besondere Aspekte zusammengefasst:

Plattform Zielframeworks Threading-Unterstützung Besondere Attribute Hinweise
.NET .NET 8+ Vollständige Parallelisierung Alle Attribute Empfohlen für neue Projekte
.NET Framework 4.6.2+ Vollständige Parallelisierung Alle Attribute Volle Unterstützung aller Merkmale
UWP UAP 10, .NET 9+ mit UAP UI-Thread UITestMethod Erfordert Einstellungen <UseUwp>true</UseUwp>; siehe UWP-Beispiel
WinUI 3 .NET 8+ UI-Thread UITestMethod Erfordert Windows App SDK; Siehe WinUI-Beispiel
Native AOT .NET 8+ Vollständige Parallelisierung Die meisten Attribute Eingeschränkter Funktionsumfang; siehe natives AOT-Beispiel

Plattformspezifische Überlegungen

UWP-Tests

UWP-Tests werden im UWP-App-Container ausgeführt und erfordern den UI-Thread für viele Vorgänge:

[TestClass]
public class UwpTests
{
    [UITestMethod]
    public void TestUwpControl()
    {
        // Test runs on UI thread
        var button = new Button();
        Assert.IsNotNull(button);
    }
}

Informationen zum Einrichten von UWP finden Sie im BlankUwpNet9App-Beispiel.

WinUI 3-Testen

WinUI 3-Tests erfordern auch ui-Threadzugriff zum Testen visueller Komponenten:

[TestClass]
public class WinUITests
{
    [UITestMethod]
    public void TestWinUIControl()
    {
        // Test runs on UI thread
        var window = new MainWindow();
        Assert.IsNotNull(window);
    }
}

Informationen zum WinUI-Setup finden Sie im Beispiel "BlankWinUINet9App" und "MSTestRunnerWinUI".

Natives AOT

Die native AOT-Kompilierung wird aufgrund reduzierter Spiegelungsfunktionen mit einigen Einschränkungen unterstützt. Verwenden Sie nach Möglichkeit Quellgeneratoren, und testen Sie Ihre AOT-Szenarien mit dem NativeAotRunner-Beispiel.

STA-Threading-Unterstützung

Für Windows COM-Interop-Szenarien stellt MSTest die Attribute STATestClass und STATestMethod bereit, um Tests in einem Einzel-Thread-Apartment auszuführen. Ausführliche Informationen zum STA-Threading, einschließlich asynchroner Fortsetzungsunterstützung, finden Sie unter Threadingattribute.

Testläufer

MSTest unterstützt zwei Testausführungsplattformen:

  • Microsoft.Testing.Platform (MTP):Die moderne, empfohlene Testplattform mit verbesserter Leistung und Erweiterbarkeit.
  • VSTest: Die ursprüngliche und Standardtestplattform für .NET.

Für neue Projekte empfehlen wir die Verwendung von Microsoft.Testing.Platform (MTP) mit MSTest.Sdk.

MSTest-Supportrichtlinie

Seit v3.0.0 folgt MSTest strikt der semantischen Versionsverwaltung.

Das MSTest-Team unterstützt nur die neueste veröffentlichte Version und empfiehlt benutzern dringend, immer auf die neueste Version zu aktualisieren, um von Verbesserungen und Sicherheitspatches zu profitieren. Vorschauversionen werden von Microsoft nicht unterstützt, werden aber vor der endgültigen Version für öffentliche Tests angeboten.

Versionsverlauf

MSTest hat sich in den Hauptversionen erheblich entwickelt:

  • MSTest v1: Das ursprüngliche Visual Studio-Testframework
  • MSTest v2: Erste Open-Source-Version mit plattformübergreifender Unterstützung
  • MSTest v3: Moderne Neuschreibung mit verbesserter Architektur und Features
  • MSTest v4: Aktuelle Version mit erweiterten Features

Ausführliche Informationen zu allen Versionen finden Sie im MSTest-Änderungsprotokoll.

Wenn Sie ein Upgrade von einer älteren Version durchführen, lesen Sie die Migrationshandbücher:

Bahnbrechende Änderungen

Das MSTest-Team überprüft sorgfältig und minimiert Änderungen, die bestehende Funktionalitäten beeinträchtigen. Wenn Breaking Changes erforderlich sind, verwendet das Team GitHub-Ankündigungen und Breaking-Change-Labels für Issues, um die Community frühzeitig zu informieren, sodass Benutzer Zeit haben, Feedback zu geben und Bedenken zu äußern, bevor die Änderungen eingeführt werden.

Nächste Schritte