Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
MSTest fournit un cycle de vie bien défini pour les classes de test et les méthodes de test, ce qui permet d’effectuer des opérations d’installation et de destruction à différents stades du processus d’exécution de test. Le cycle de vie peut être regroupé en trois étapes suivantes :
- Cycle de vie au niveau de l'assemblage
- Cycle de vie au niveau de la classe
- Cycle de vie au niveau du test
L’exécution des événements de cycle de vie se produit du niveau le plus élevé (assembly) au niveau le plus bas (méthode de test). L’ordre d’exécution est le suivant :
- Initialisation de l'assemblage
- Initialisation de classe (pour chaque classe de test)
- Initialisation de test (pour chaque méthode de test)
- Exécution de test
- Nettoyage des tests (pour chaque méthode de test)
- Nettoyage de classe (pour chaque classe de test)
- Nettoyage de l'assemblage
Cycle de vie de l’assemblage
Le cycle de vie de l’assembly décrit le cycle de vie de l’assembly entier, qui inclut toutes les classes et méthodes de test. Pour gérer le cycle de vie de l’assembly, MSTest fournit les attributs AssemblyInitialize et AssemblyCleanup . Pour en savoir plus sur ces attributs, reportez-vous à la documentation AssemblyInitialize et AssemblyCleanup .
Cycle de vie au niveau de la classe
Le cycle de vie de la classe de test fait référence au cycle de vie des classes de test individuelles au sein de l’assembly et peut être implémenté à l’aide des attributs ClassInitialize et ClassCleanup . Ces attributs vous permettent de définir des méthodes d’installation et de destruction exécutées avant et après tous les tests d’une classe, respectivement. Pour plus d’informations sur ces attributs, reportez-vous à la documentation ClassInitialize et ClassCleanup . Le cycle de vie au niveau de la classe n’est exécuté qu’une seule fois par classe, quel que soit le nombre de tests d’une classe.
Cycle de vie des tests
Le cycle de vie du niveau de test est exécuté pour chaque méthode de test. Pour les tests paramétrables, chaque ensemble de paramètres est traité comme une méthode de test distincte et le cycle de vie est exécuté pour chaque ensemble de paramètres. Le cycle de vie des niveaux de test peut être divisé en préparation, exécution et nettoyage, avec des méthodes multiples pour la mise en œuvre de la préparation et du nettoyage.
Configuration
La phase de configuration du cycle de vie du niveau de test est chargée de préparer l’environnement de test avant l’exécution de chaque méthode de test. Cela peut être obtenu à l’aide de l’attribut TestInitialize
ou en implémentant un constructeur dans la classe de test. Dans le cas de l’héritage, l’exécution de TestInitialize
méthodes suit l’ordre de la classe de base vers la classe dérivée. Si une classe de test implémente un constructeur, elle est exécutée avant la TestInitialize
méthode. Pour en savoir plus sur l’attribut TestInitialize
, reportez-vous à la documentation de l’attribut de niveau test .
Remarque
Contrairement au constructeur de classe, TestInitialize
les méthodes peuvent être asynchrones et prennent également en charge l’utilisation des attributs, comme le TimeoutAttribute
.
Exécution
La phase d’exécution est la phase où la méthode de test réelle est exécutée. Si une méthode de test retourne une tâche ou ValueTask, la méthode de test sera attendue.
Avertissement
Dans le cas de méthodes de test asynchrones, aucun SynchronizationContext n’est fourni. Cela ne s’applique pas aux UITestMethod
tests pour UWP et WinUI car ils s'exécutent sur le fil d'exécution de l'interface utilisateur qui possède un SynchronizationContext.
Nettoyage
La phase de nettoyage du cycle de vie du niveau de test est chargée de nettoyer l’environnement de test après l’exécution de chaque méthode de test.
Pour ce faire, utilisez l’attribut TestCleanup
ou implémentez l’interface IDisposable
/IAsyncDisposable
dans la classe de test.
Si une classe de test implémente IDisposable
ou IAsyncDisposable
, sa Dispose
/DisposeAsync
méthode est exécutée après la TestCleanup
méthode.
En cas d’héritage, l’exécution de TestCleanup
méthodes suit l’ordre de la classe dérivée vers la classe de base.
Pour en savoir plus sur l’attribut TestInitialize
, reportez-vous à la documentation de l’attribut de niveau test .
JSON
L’ordre complet du cycle de vie du niveau de test est le suivant :
- Créer une instance de classe de test
- Définir
TestContext
la propriété si elle est présente - Exécuter TestInitialize (s’il est implémenté)
- Exécution de méthode de test
- Mettre à jour
TestContext
avec les résultats des tests (comme la propriétéOutcome
) - Exécuter TestCleanup en cas d’implémentation
- Exécuter DisposeAsync en cas d’implémentation
- Exécuter la méthode Dispose si elle est implémentée