Udostępnij przez


Równoległy

TAEF zapewnia mechanizm równoległego wykonywania testów w wielu procesorach.

Gwarancje równoległości

  • Żadne dwa testy, które nie są oznaczone jako równoległe , nigdy nie będą wykonywane współbieżnie.
  • Testy równoległe można uruchamiać jednocześnie z innymi równoległymi i nie równoległymi testami.
  • Wszystkie ustawienia modułu/klasy/testu i czyszczenia są uruchamiane liniowo przed odpowiednim testem i po nim w tym samym procesie.
  • Konfiguracja modułu/klasy może być wykonywana równolegle w różnych procesach, jeśli moduł lub klasa zawiera co najmniej jeden test równoległy.
  • Tryb wykonywania równoległego jest niezgodny z mechanizmem wykonywania "/inproc".

Oznaczanie testów jako równoległe

Przykład (kod natywny):

class MyTests
{

    TEST_CLASS(MyTests);

    BEGIN_TEST_METHOD(ParallelTest)
        TEST_METHOD_PROPERTY(L"Parallel", L"true")
    END_TEST_METHOD()
};

Podobnie jak w przypadku innych ogólnych metadanych w funkcji TAEF, można to określić na poziomie klasy lub modułu i będą dziedziczone przez wszystkie testy zawarte w tej klasie lub module. Aby na przykład oznaczyć cały zestaw jako równoległy, można wykonać następujące czynności (poza dowolną klasą lub specyfikacją testową) w pliku cpp skompilowanym do testowej biblioteki DLL:

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

Ten szerszy zakres można następnie zastąpić w mniejszych zakresach, aby wyłączyć równoległość dla konkretnych przypadków testowych lub klas w następujący sposób:

class MyTests
{
    TEST_CLASS(MyTests);

    BEGIN_TEST_METHOD(NonParallelTest)
        TEST_METHOD_PROPERTY(L"Parallel", L"false");
    END_TEST_METHOD()
};

Niezależnie od tego, które ustawienie jest najbliższe metodzie testowej (metadane metody są najbliższe, a następnie klasy, a następnie modułu) będą używane do decydowania, czy uruchamiać ten test równolegle z innymi testami.

Włączanie równoległości w wierszu polecenia

Równoległe wykonywanie jest funkcją opcjonalną. Chociaż testy mogą być oznaczone jako równoległe, taEF będzie nadal wykonywać testy liniowo, chyba że tryb równoległego wykonywania jest włączony w wierszu polecenia:

te unittests\* /parallel