Isolation des tests
TAEF prend en charge l’exécution de tests dans un processus isolé. Il est possible de contrôler le moment où ces processus sont remplacés par l’option de ligne de commande et de métadonnées IsolationLevel. Cela peut être utile pour détecter les dépendances de test involontaires ou pour réduire l’impact d’un test qui fuit.
La liste suivante présente les valeurs possibles de l’option de ligne de commande et de métadonnées IsolationLevel, ainsi que leurs significations.
None
TAEF n’isolera aucun test.
Module
TAEF utilisera un hôte de processus distinct pour chaque DLL de test. Il s’agit de la valeur par défaut.
Assembly
Identique au module
DLL
Identique au module
Classe
TAEF utilise un hôte de processus distinct pour chaque classe de test.
Méthode
TAEF utilise un hôte de processus distinct pour chaque test. Si le test se trouve dans un groupe d’exécution, le même hôte de processus est utilisé pour l’ensemble du groupe d’exécution.
Test
Identique à la méthode
La valeur de métadonnées IsolationLevel utilisée est les métadonnées spécifiées les plus proches du niveau de test. Si l’option IsolationLevel de ligne de commande est également définie, la valeur utilisée est celle qui fournit le plus d’isolation.
BEGIN_MODULE()
MODULE_PROPERTY(L"IsolationLevel", L"Class")
END_MODULE()
class MyTestClass1
{
TEST_CLASS(MyTestClass1);
BEGIN_TEST_METHOD(MyTest1)
TEST_METHOD_PROPERTY(L"IsolationLevel", L"Method")
END_TEST_METHOD()
TEST_METHOD(MyTest2);
TEST_METHOD(MyTest3);
};
class MyTestClass2
{
TEST_CLASS(MyTestClass2);
TEST_METHOD(MyTest1);
TEST_METHOD(MyTest2);
};
Dans l’exemple ci-dessus, trois hôtes de processus différents sont utilisés : un pour MyTestClass1::MyTest1, un pour les deux autres méthodes dans MyTestClass1 et un pour MyTestClass2. Si l’utilisateur devait ajouter /IsolationLevel:Method à la ligne de commande du te.exe, cinq hôtes de processus différents seraient utilisés : un pour chaque test.
Notez que si un module, une classe ou un test est développé par les métadonnées ou piloté par les données et qu’il doit être isolé, chaque extension de métadonnées et/ou de données est isolée. Cela peut être évité au niveau du test en faisant du test un membre d’un groupe d’exécution.
class MyTestClass3 :
{
BEGIN_TEST_CLASS(MyTestClass3)
TEST_CLASS_PROPERTY(L"Data:MyParameter1", L"{1, 2, 3}")
TEST_CLASS_PROPERTY(L"IsolationLevel", L"Class")
END_TEST_CLASS()
BEGIN_TEST_METHOD(MyTest1)
TEST_METHOD_PROPERTY(L"Data:MyParameter2", L"{1, 2, 3}")
TEST_METHOD_PROPERTY(L"IsolationLevel", L"Method")
TEST_METHOD_PROPERTY(L"ExecutionGroup", L"MyExecutionGroup")
END_TEST_METHOD()
TEST_METHOD(MyTest2);
TEST_METHOD(MyTest3);
};
Dans cet exemple, six hôtes de processus différents sont utilisés. Chacune des trois valeurs de MyParameter1 est isolée et MyTest1 est isolée de MyTest2 et MyTest3. Les trois valeurs de MyParameter2 ne sont pas isolées, car elles se trouvent dans le même groupe d’exécution.