Параллельный
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