Delen via


MSTest-levenscyclus

MSTest biedt een goed gedefinieerde levenscyclus voor testklassen en testmethoden, waardoor installatie- en teardown-bewerkingen in verschillende fasen van het testuitvoeringsproces kunnen worden uitgevoerd. De levenscyclus kan worden gegroepeerd in de volgende drie fasen:

  • Levenscyclus op assemblyniveau
  • Levenscyclus op klasseniveau
  • Levenscyclus op testniveau

De uitvoering van de levenscyclus-gebeurtenissen vindt plaats van het hoogste niveau (assembly) naar het laagste niveau (testmethode). De uitvoeringsvolgorde is als volgt:

  1. Initialisatie van de assembly
  2. Klasse-initialisatie (voor elke testklasse)
  3. Initialisatie testen (voor elke testmethode)
  4. Testuitvoering
  5. Test Cleanup (voor elke testmethode)
  6. Class Cleanup (voor elke testklasse)
  7. Assemblage opschonen

Levenscyclus op assemblyniveau

De levenscyclus van de assembly beschrijft de levenscyclus van de hele assembly, waaronder alle testklassen en -methoden. MsTest biedt de assembly-kenmerken AssemblyInitialize en AssemblyCleanup om de levenscyclus van de assembly te beheren. Raadpleeg de documentatie AssemblyInitialize en AssemblyCleanup voor meer informatie over deze kenmerken.

Levenscyclus op klasseniveau

De levenscyclus van de testklasse verwijst naar de levenscyclus van afzonderlijke testklassen binnen de assembly en kan worden geïmplementeerd met behulp van de classInitialize - en ClassCleanup-kenmerken . Met deze kenmerken kunt u respectievelijk setup- en teardown-methoden definiëren die worden uitgevoerd vóór en na alle tests in een klasse. Raadpleeg de documentatie ClassInitialize en ClassCleanup voor meer informatie over deze kenmerken. De levenscyclus op klasseniveau wordt slechts eenmaal per klasse uitgevoerd, ongeacht het aantal tests in een klasse.

Levenscyclus op testniveau

De levenscyclus op testniveau wordt uitgevoerd voor elke testmethode. Voor geparameteriseerde tests wordt elke set parameters behandeld als een afzonderlijke testmethode en wordt de levenscyclus uitgevoerd voor elke set parameters. De levenscyclus op testniveau kan worden gegroepeerd in installatie, uitvoering en opschonen met installatie en opschoning die ondersteuning biedt voor meerdere manieren om te worden geïmplementeerd.

Configuratie

De installatiefase van de levenscyclus van testniveau is verantwoordelijk voor het voorbereiden van de testomgeving voordat elke testmethode wordt uitgevoerd. Dit kan worden bereikt met behulp van het TestInitialize kenmerk of door een constructor in de testklasse te implementeren. In het geval van overname volgt de uitvoering van TestInitialize methoden de volgorde van de basisklasse naar de afgeleide klasse. Als een testklasse een constructor implementeert, wordt deze vóór de TestInitialize methode uitgevoerd. Raadpleeg de documentatie van het TestInitialize voor meer informatie over het kenmerk.

Opmerking

In tegenstelling tot de klasseconstructor TestInitialize kunnen methoden asynchroon zijn en ook het kenmerkgebruik ondersteunen, zoals de TimeoutAttribute.

Uitvoering

De uitvoeringsfase is de fase waarin de daadwerkelijke testmethode wordt uitgevoerd. Als een testmethode een Task of ValueTask retourneert, zal er op de testmethode worden gewacht.

Waarschuwing

In het geval van asynchrone testmethoden wordt er geen SynchronizationContext opgegeven. Dit geldt niet voor UITestMethod tests voor UWP en WinUI, omdat deze worden uitgevoerd op de UI-thread die een SynchronizationContext heeft.

Opruimen

De opschoonfase van de levenscyclus van testniveau is verantwoordelijk voor het opschonen van de testomgeving na de uitvoering van elke testmethode. Dit kan worden bereikt met behulp van het TestCleanup kenmerk of door de IDisposable/IAsyncDisposable interface in de testklasse te implementeren. Als een testklasse IDisposable of IAsyncDisposable implementeert, wordt zijn Dispose/DisposeAsync methode uitgevoerd na de TestCleanup methode. In het geval van overname volgt de uitvoering van TestCleanup methoden de volgorde van de afgeleide klasse naar de basisklasse. Raadpleeg de documentatie van het TestInitialize voor meer informatie over het kenmerk.

Bestelling

De volledige volgorde van de levenscyclus van het testniveau is als volgt:

  1. Instantie van testklasse maken
  2. Eigenschap instellen TestContext indien aanwezig
  3. TestInitialize uitvoeren (indien geïmplementeerd)
  4. Uitvoering van testmethode
  5. Bijwerken TestContext met testresultaten (zoals Outcome eigenschap)
  6. TestCleanup uitvoeren als deze is geïmplementeerd
  7. DisposeAsync uitvoeren als dit is geïmplementeerd
  8. Verwijdering uitvoeren indien geïmplementeerd