Aislamiento de prueba
TAEF admite la ejecución de pruebas en un proceso aislado. Es posible controlar cuándo estos procesos se reemplazan por la opción IsolationLevel metadata and command line (Metadatos de IsolationLevel y línea de comandos). Esto puede ser útil para detectar dependencias de prueba no deseadas o para reducir el impacto de una prueba de pérdida.
En la lista siguiente se muestran los valores posibles de los metadatos isolationLevel y la opción de línea de comandos y sus significados.
None
TAEF no aislará ninguna prueba.
Módulo
TAEF usará un host de proceso independiente para cada DLL de prueba. Este es el valor predeterminado.
Assembly
Igual que el módulo
DLL
Igual que el módulo
Clase
TAEF usará un host de proceso independiente para cada clase de prueba.
Método
TAEF usará un host de proceso independiente para cada prueba. Si la prueba está dentro de un grupo de ejecución, se usará el mismo host de proceso para todo el grupo de ejecución.
Prueba
Igual que el método
El valor de metadatos IsolationLevel que se usa es los metadatos especificados más cerca del nivel de prueba. Si también se establece la opción IsolationLevel de la línea de comandos, el valor que se usa es el que proporciona más aislamiento.
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);
};
En el ejemplo anterior, se usan tres hosts de proceso diferentes: uno para MyTestClass1::MyTest1, otro para los otros dos métodos de MyTestClass1 y otro para MyTestClass2. Si el usuario agregara /IsolationLevel:Method a la línea de comandos del te.exe, se usarían cinco hosts de proceso diferentes: uno para cada prueba.
Tenga en cuenta que si un módulo, clase o prueba está expandido por metadatos o controlado por datos y se va a aislar, cada metadato o expansión de datos está aislado. Esto se puede evitar en el nivel de prueba haciendo que la prueba sea miembro de un grupo de ejecución.
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);
};
En este ejemplo, se usan seis hosts de procesos diferentes. Cada uno de los tres valores de MyParameter1 está aislado y MyTest1 está aislado de MyTest2 y MyTest3. Los tres valores de MyParameter2 no están aislados, ya que están en el mismo grupo de ejecución.