Поделиться через


Параллельный

TAEF предоставляет механизм параллельного выполнения тестов в нескольких процессорах.

Гарантии параллелизма

  • Ни два теста, не помеченные как параллельные, никогда не будут выполняться одновременно.
  • Параллельные тесты можно выполнять параллельно с другими параллельными и не параллельными тестами.
  • Все модули, класс и проверка установки и очистка будут выполняться линейно до и после соответствующего теста в одном процессе.
  • Настройка модуля или класса может выполняться параллельно при различных процессах, если модуль или класс содержит по крайней мере один параллельный тест.
  • Режим параллельного выполнения несовместим с механизмом выполнения "/inproc ".

Маркировка тестов как параллельная

Пример (машинный код):

class MyTests
{

    TEST_CLASS(MyTests);

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

Как и в случае с другими общими метаданными в TAEF, это можно указать на уровне класса или модуля и будет наследуться всеми тестами, содержащимися в этом классе или модуле. Например, чтобы пометить всю сборку как параллелизуемую, можно сделать следующее (за пределами любой спецификации класса или теста) в файле cpp, скомпилированном в тестовой библиотеке DLL:

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

Затем этот более широкий область можно переопределить на меньших область, чтобы отключить параллелизм для конкретных тестовых случаев или классов следующим образом:

class MyTests
{
    TEST_CLASS(MyTests);

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

Независимо от того, какой параметр ближе всего к методу теста (метаданные метода являются ближайшим, а затем классом, а затем модулем) будет использоваться для определения того, следует ли выполнять этот тест параллельно с другими тестами.

Включение параллелизма в командной строке

Параллельное выполнение — это функция согласия. Хотя тесты могут быть помечены как параллельные, TAEF продолжит выполнять тесты линейно, если в командной строке не включен режим параллельного выполнения:

te unittests\* /parallel