Parallel
O TAEF fornece um mecanismo para executar testes em paralelo em vários processadores.
Garantias de paralelismo
- Nenhum teste não marcado como paralelizável será executado simultaneamente.
- Testes paralelos podem ser executados simultaneamente com outros testes paralelos e não paralelos.
- Toda a configuração e limpeza do módulo/classe/teste será executada linearmente antes e depois do teste relevante no mesmo processo.
- A configuração do módulo/classe poderá ser executada em paralelo em diferentes processos se o módulo ou classe contiver pelo menos um teste paralelo.
- O modo de execução paralela é incompatível com o mecanismo de execução "/inproc".
Marcar testes como paralelizáveis
Exemplo (código nativo):
class MyTests
{
TEST_CLASS(MyTests);
BEGIN_TEST_METHOD(ParallelTest)
TEST_METHOD_PROPERTY(L"Parallel", L"true")
END_TEST_METHOD()
};
Como acontece com outros metadados gerais no TAEF, isso pode ser especificado no nível de classe ou módulo & será herdado por todos os testes contidos nessa classe ou módulo. Por exemplo, para marcar um assembly inteiro como paralelizável, você pode fazer o seguinte (fora de qualquer especificação de teste ou classe) em um arquivo cpp compilado na sua DLL de teste:
BEGIN_MODULE()
MODULE_PROPERTY(L"Parallel", L"true");
END_MODULE()
Esse escopo mais amplo pode ser substituído em escopos menores para desabilitar o paralelismo para classes ou casos de teste específicos assim:
class MyTests
{
TEST_CLASS(MyTests);
BEGIN_TEST_METHOD(NonParallelTest)
TEST_METHOD_PROPERTY(L"Parallel", L"false");
END_TEST_METHOD()
};
Qualquer configuração mais próxima do método de teste (metadados do método é o mais próximo, depois classe, depois módulo) será usada para decidir se esse teste deve ser executado em paralelo com outros testes.
Habilitar o paralelismo no prompt de comando
A execução paralela é um recurso opcional. Embora os testes possam ser marcados como paralelos, o TAEF continuará a executar testes linearmente, a menos que o modo de execução paralela esteja habilitado no prompt de comando:
te unittests\* /parallel