Paralelo
TAEF proporciona un mecanismo para ejecutar pruebas en paralelo en varios procesadores.
Garantías de paralelismo
- No se ejecutarán simultáneamente dos pruebas no marcadas como paralelizables.
- Las pruebas paralelas se pueden ejecutar simultáneamente con otras pruebas paralelas y no paralelas.
- Toda la configuración del módulo, la clase o la prueba y la limpieza se ejecutarán linealmente antes y después de la prueba pertinente en el mismo proceso.
- La configuración de módulos o clases se puede ejecutar en paralelo en distintos procesos si el módulo o la clase contiene al menos una prueba en paralelo.
- El modo de ejecución en paralelo no es compatible con el mecanismo de ejecución "/inproc".
Marcado de pruebas como paralelizables
Ejemplo (código nativo):
class MyTests
{
TEST_CLASS(MyTests);
BEGIN_TEST_METHOD(ParallelTest)
TEST_METHOD_PROPERTY(L"Parallel", L"true")
END_TEST_METHOD()
};
Al igual que con otros metadatos generales en TAEF, esto se puede especificar en el nivel de clase o módulo y se heredarán por todas las pruebas contenidas en esa clase o módulo. Por ejemplo, para marcar un ensamblado completo como paralelizable, puede hacer lo siguiente (fuera de cualquier clase o especificación de prueba) en un archivo cpp compilado en el archivo DLL de prueba:
BEGIN_MODULE()
MODULE_PROPERTY(L"Parallel", L"true");
END_MODULE()
A continuación, este ámbito más amplio se puede invalidar en ámbitos más pequeños para deshabilitar el paralelismo para casos de prueba o clases concretos de la siguiente manera:
class MyTests
{
TEST_CLASS(MyTests);
BEGIN_TEST_METHOD(NonParallelTest)
TEST_METHOD_PROPERTY(L"Parallel", L"false");
END_TEST_METHOD()
};
Se utilizará la configuración más cercana al método de prueba (los metadatos del método son los más cercanos, luego la clase, luego el módulo) para decidir si se ejecuta esta prueba en paralelo con otras pruebas.
Habilitación del paralelismo en el símbolo del sistema
La ejecución en paralelo es una característica opcional. Aunque las pruebas se pueden marcar como paralelas, TAEF seguirá ejecutando pruebas linealmente a menos que el modo de ejecución en paralelo esté habilitado en el símbolo del sistema:
te unittests\* /parallel