Partilhar via


Paralelo

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.
  • Os 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 pode 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()
};

Tal como acontece com outros metadados gerais no TAEF, isto pode ser especificado ao nível da 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 classe ou especificação de teste) em um arquivo cpp compilado em sua DLL de teste:

BEGIN_MODULE()
    MODULE_PROPERTY(L"Parallel", L"true");
END_MODULE()

Esse escopo mais amplo pode então ser substituído em escopos menores para desabilitar o paralelismo para casos de teste ou classes particulares da seguinte maneira:

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 são os mais próximos, depois classe, depois módulo) será usada para decidir se esse teste deve ser executado em paralelo com outros testes.

Ativando o paralelismo na linha de comandos

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 ativado no prompt de comando:

te unittests\* /parallel