Partager via


Parallèle

TAEF fournit un mécanisme permettant d’exécuter des tests en parallèle sur plusieurs processeurs.

Garanties de parallélisme

  • Deux tests non marqués comme parallélisables ne seront jamais exécutés simultanément.
  • Les tests parallèles peuvent être exécutés simultanément avec d’autres tests parallèles et non parallèles.
  • Tous les réglages et nettoyages des modules/classes/tests seront exécutés linéairement avant et après le test concerné dans le même processus.
  • La configuration du module/de la classe peut être exécutée en parallèle sur différents processus si le module ou la classe contient au moins un test parallèle.
  • Le mode d’exécution parallèle est incompatible avec le mécanisme d’exécution « /inproc ».

Marquage des tests comme parallélisables

Exemple (code natif) :

class MyTests
{

    TEST_CLASS(MyTests);

    BEGIN_TEST_METHOD(ParallelTest)
        TEST_METHOD_PROPERTY(L"Parallel", L"true")
    END_TEST_METHOD()
};

Comme pour les autres métadonnées générales de TAEF, on peut le spécifier au niveau de la classe ou du module. & sera hérité par tous les tests contenus dans cette classe ou module. Par exemple, pour marquer un assembly entier comme parallélisable, vous pouvez effectuer les opérations suivantes (en dehors de toute classe ou spécification de test) dans un fichier cpp compilé dans votre DLL de test :

BEGIN_MODULE()
    MODULE_PROPERTY(L"Parallel", L"true");
END_MODULE()

Cette porté plus large peut ensuite être remplacée par des portées plus restreintes afin de désactiver le parallélisme pour des cas de test ou des classes spécifiques, comme suit :

class MyTests
{
    TEST_CLASS(MyTests);

    BEGIN_TEST_METHOD(NonParallelTest)
        TEST_METHOD_PROPERTY(L"Parallel", L"false");
    END_TEST_METHOD()
};

Le paramètre le plus proche de la méthode de test (les métadonnées de la méthode sont les plus proches, puis la classe, puis le module) sera utilisé pour décider si ce test doit être exécuté en parallèle avec d’autres tests.

Activation du parallélisme à l’invite de commande

L’exécution parallèle est une fonctionnalité optionnelle. Bien que les tests puissent être marqués comme parallèles, TAEF continuera d’exécuter des tests linéairement, sauf si le mode d’exécution parallèle est activé à l’invite de commande :

te unittests\* /parallel