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.
MSTest bietet einen gut definierten Lebenszyklus für Testklassen und Testmethoden, sodass Setup- und Teardownvorgänge in verschiedenen Phasen des Testausführungsprozesses ausgeführt werden können. Der Lebenszyklus kann in die folgenden drei Phasen gruppiert werden:
- Lebenszyklus auf Assemblyebene
- Lebenszyklus auf Klassenebene
- Lebenszyklus der Teststufe
Die Ausführung der Lebenszyklusereignisse erfolgt von der höchsten Ebene (Assembly) bis zur niedrigsten Ebene (Testmethode). Die Reihenfolge der Ausführung lautet wie folgt:
- Initialisierung der Assembly
- Klasseninitialisierung (für jede Testklasse)
- Testinitialisierung (für jede Testmethode)
- Testausführung
- Testbereinigung (für jede Testmethode)
- Klassenbereinigung (für jede Testklasse)
- Montagebereinigung
Lebenszyklus auf Assemblyebene
Der Assemblylebenszyklus beschreibt den Lebenszyklus der gesamten Assembly, die alle Testklassen und Methoden enthält. Zum Verwalten des Assemblylebenszyklus stellt MSTest die Attribute "AssemblyInitialize " und "AssemblyCleanup " bereit. Weitere Informationen zu diesen Attributen finden Sie in der AssemblyInitialize- und AssemblyCleanup-Dokumentation .
Lebenszyklus auf Klassenebene
Der Testklassenlebenszyklus bezieht sich auf den Lebenszyklus einzelner Testklassen innerhalb der Assembly und kann mithilfe der Attribute "ClassInitialize " und "ClassCleanup " implementiert werden. Mit diesen Attributen können Sie Setup- und Teardownmethoden definieren, die vor bzw. nach allen Tests in einer Klasse ausgeführt werden. Weitere Informationen zu diesen Attributen finden Sie in der Dokumentation " ClassInitialize" und "ClassCleanup ". Der Lebenszyklus auf Klassenebene wird nur einmal pro Klasse ausgeführt, unabhängig von der Anzahl der Tests in einer Klasse.
Lebenszyklus auf Testebene
Der Lebenszyklus der Testebene wird für jede Testmethode ausgeführt. Bei parametrisierten Tests wird jeder Parametersatz als separate Testmethode behandelt, und der Lebenszyklus wird für jeden Parametersatz ausgeführt. Der Lebenszyklus der Testebene kann in Setup, Ausführung und Bereinigung unterteilt werden, wobei Setup und Bereinigung mehrere Implementierungsmöglichkeiten unterstützen.
Konfiguration
Die Einrichtungsphase des Lebenszyklus der Testebene ist für die Vorbereitung der Testumgebung vor der Ausführung jeder Testmethode verantwortlich. Dies kann mithilfe des TestInitialize Attributs oder durch Implementieren eines Konstruktors in der Testklasse erreicht werden. Im Falle der Vererbung folgt die Ausführung von TestInitialize Methoden der Reihenfolge von der Basisklasse bis zur abgeleiteten Klasse. Wenn eine Testklasse einen Konstruktor implementiert, wird sie vor der TestInitialize Methode ausgeführt. Weitere Informationen zum Attribut finden Sie in der Dokumentation zum TestInitializeAttribut auf Testebene .
Hinweis
Im Gegensatz zum Klassenkonstruktor TestInitialize können Methoden asynchron sein und unterstützen auch die Verwendung von Attributen wie TimeoutAttribute.
Ausführung
Die Ausführungsphase ist die Phase, in der die eigentliche Testmethode ausgeführt wird. Wenn eine Testmethode einen Task oder ValueTask zurückgibt, wird auf die Testmethode gewartet.
Warnung
Bei asynchronen Testmethoden wird kein SynchronizationContext bereitgestellt. Dies gilt nicht für UITestMethod Tests für UWP und WinUI, da sie im UI-Thread ausgeführt werden, der über einen SynchronizationContext verfügt.
Säuberungsaktion
Die Bereinigungsphase des Lebenszyklus der Testebene ist für das Bereinigen der Testumgebung nach der Ausführung jeder Testmethode verantwortlich.
Dies kann mithilfe des TestCleanup Attributs oder durch Implementieren der IDisposable/IAsyncDisposable Schnittstelle in der Testklasse erreicht werden.
Wenn eine Testklasse IDisposable oder IAsyncDisposable implementiert, wird ihre Dispose/DisposeAsync Methode nach der TestCleanup Methode ausgeführt.
Bei Vererbung folgt die Ausführung von TestCleanup-Methoden der Reihenfolge von der abgeleiteten Klasse zur Basisklasse.
Weitere Informationen zum Attribut finden Sie in der Dokumentation zum TestInitializeAttribut auf Testebene .
Bestellung
Die vollständige Reihenfolge des Lebenszyklus auf Testebene lautet wie folgt:
- Erstellen einer Instanz der Testklasse
- Eigenschaft
TestContextfestlegen, wenn vorhanden - TestInitialize ausführen (sofern implementiert)
- Testmethodenausführung
- Aktualisieren Sie
TestContextmit Testergebnissen (wie derOutcome-Eigenschaft) - Ausführen von TestCleanup bei Implementierung
- Ausführen von DisposeAsync, wenn implementiert
- Dispose ausführen, wenn implementiert