Partilhar via


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