Comment : définir des limites de temps pour l'exécution des tests
Vous pouvez définir des limites de temps qui seront respectées par l'exécution d'un test ou d'une série de tests. Cela peut s'avérer nécessaire par exemple si vous travaillez dans un environnement de test et que vous avez besoin d'une série de tests se termine avant une certaine heure de la journée.
Un autre scénario d'utilisation des limites de temps est celui du code non réactif. Si un test rencontre une section de code qui ne répond pas, l'utilisation d'un délai d'expiration de test et d'un délai d'expiration de série de tests permet au test en question de se terminer de sorte que la série de tests puisse continuer avec les tests suivants.
Il existe deux façons de définir des limites de temps :
Définissez des valeurs de délai d'attente dans les paramètres de test pour les tests et séries de tests. Pour plus d'informations sur les paramètres de test, consultez Créer des paramètres de test pour exécuter des tests automatisés à partir de Visual Studio.
Vous pouvez substituer la valeur du délai d'attente par test en définissant une propriété sur un test donné. Vous ne pouvez pas substituer la valeur du délai d'attente de série de tests.
Vous ne pouvez pas définir de délais d'expiration de test pour des types de tests spécifiques. Les délais d'expiration de test ne s'appliquent pas aux tests manuels, mais les délais d'expiration de série de tests sont toujours appliqués, même pour les séries de tests qui contiennent des tests manuels.
La définition de limites de temps pour les tests et les séries de tests a les effets suivants :
Lorsque la durée d'une série de tests atteint sa valeur de délai d'attente, la série de tests est abandonnée, même si certains tests n'ont pas été exécutés.
Lorsque la durée d'un test individuel atteint sa valeur de délai d'attente, l'exécution de ce test s'arrête et le test porte la mention Dépassement de délai. La série de tests se poursuit avec le test suivant.
Comment les méthodes d'initialisation affectent les délais d'expiration de test
Une série de tests peut inclure une méthode AssemblyInitializeAttribute et une méthode ClassInitializeAttribute. Si ces méthodes sont définies, elles nécessiteront une durée finie pour s'exécuter, puis le premier test de la série de tests commencera.
Le délai employé par les méthodes d'initialisation est ajouté au délai employé par le premier test. Nous pouvons l'exprimer sous la forme d'une formule utilisant ces termes :
Dt = durée totale
Dr = durée pendant laquelle un test s'exécute
I = méthodes d'initialisation pour l'assembly et la classe
Tn = test qui s'exécute à un emplacement aléatoire dans une série de tests
T1 = test qui s'exécute à la première place dans une série de tests
Ce qui suit s'applique pour tous les tests après le premier :
Dt**[Tn] = Dr[Tn]**
Mais veuillez noter le cas suivant :
Dt**[T1] = Dr[T1] + D[I]**
Le premier test qui s'exécute peut se voir affecter une valeur de délai d'attente par test. Dans ce cas, la durée d'initialisation prend en compte la limite de temps imposée sur le premier test et pourrait par conséquent entraîner l'échec de ce test.
Notes
Cette limitation pourrait entraîner uniquement l'échec du premier test. Les tests suivants de la série de tests sont non affectés.
Si votre série de tests inclut des méthodes d'initialisation, vous pouvez contourner cette limitation de la manière suivante : appliquez à chaque test un délai d'expiration supérieur à la somme des durées d'exécution attendues pour la méthode de test et toutes les méthodes d'initialisation. Vous devriez l'appliquer pour chaque test. Compte tenu que le test unitaire ne garantit pas l'ordre dans lequel s'exécutent les tests, vous ne pouvez pas prédire quel test s'exécutera en premier.
Comment les méthodes Cleanup affectent les délais d'attente de série de tests
Une série de tests peut inclure une méthode AssemblyCleanupAttribute et une méthode ClassCleanupAttribute. Une fois ces méthodes exécutées, la série de tests prend fin.
La série de tests peut se voir affecter une valeur de délai d'attente. La durée employée par les méthodes Cleanup est ajoutée à la durée totale employée par la série de tests. En d'autres termes, la durée de nettoyage prend en compte la limite de temps que vous avez imposée sur la série de tests dans son intégralité et pourrait par conséquent entraîner un dépassement de délai de la série de tests.
Pour définir le délai d'expiration de série de tests
Ouvrez l' Explorateur de solutions.
Dans le dossier Éléments de solution de votre solution, double-cliquez sur le fichier de paramètres de test.
La boîte de dialogue Paramètres de configuration apparaît.
Cliquez sur Délai d'attente des tests.
Sélectionnez Abandonner une série de tests si sa durée d'exécution totale dépasse :
Définissez la valeur de délai d'attente de série de tests, en heures, minutes et secondes.
Cliquez sur Enregistrer, puis cliquez sur Fermer.
Pour que ce paramètre soit appliqué, les paramètres de test que vous avez modifiés doivent être actifs. Pour plus d'informations, consultez Comment : appliquer des paramètres de test à partir de Microsoft Visual Studio.
Pour définir le délai d'attente par test à l'aide des paramètres de test
Ouvrez l' Explorateur de solutions.
Dans le dossier Éléments de solution de votre solution, double-cliquez sur le fichier de paramètres de test.
La boîte de dialogue Paramètres de test apparaît.
Cliquez sur Délai d'attente des tests.
Sélectionnez Marquer un test comme ayant échoué si sa durée d'exécution dépasse :
Définissez la valeur de délai d'attente par test, en heures, minutes et secondes.
Cliquez sur Enregistrer, puis cliquez sur Fermer.
Pour que ce paramètre soit appliqué, les paramètres de test que vous avez modifiés doivent être actifs. Pour plus d'informations, consultez Comment : appliquer des paramètres de test à partir de Microsoft Visual Studio.
Pour définir le délai d'expiration par test à l'aide d'une propriété de test
Ouvrez l'Explorateur de tests ou la fenêtre Affichage des tests.
Cliquez sur le test, puis appuyez sur F4.
La fenêtre Propriétés s'ouvre et les propriétés de ce test sont affichées.
Pour la propriété Timeout, définissez la valeur en heures, minutes et secondes.
Notes
La valeur du délai d'attente d'un test manuel est Infinie. Vous ne pouvez pas modifier cette valeur.
Pour ce test uniquement, la valeur que vous définissez substitue la valeur du délai d'attente par test configurée dans les paramètres de test. La valeur du délai d'attente de série de tests n'est pas affectée.
Pour définir le délai d'attente par test à l'aide d'un attribut de test unitaire
Ouvrez le fichier de code source d'un test unitaire.
Recherchez l'attribut TestMethod du test.
Ajoutez l'attribut Timeout et un paramètre qui exprime la valeur du délai d'attente.
La valeur du délai d'attente est exprimée en millisecondes.
Exemple (Visual C#) :
[TestMethod(), Timeout(80)] public void MyTestMethod() { // test code }
Exemple (Microsoft Visual Basic) :
<TestMethod(), Timeout(80)> _ Public Sub MyTestMethod() ' test code End Sub
Pour ce test uniquement, la valeur que vous définissez substitue la valeur du délai d'attente par test configurée dans les paramètres de test. La valeur du délai d'attente de série de tests n'est pas affectée.
Voir aussi
Tâches
Comment : appliquer des paramètres de test à partir de Microsoft Visual Studio