Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
TAEF поддерживает выполнение тестов в изолированном процессе. Можно управлять заменой этих процессов, используя метаданные IsolationLevel и параметр командной строки. Это может быть полезно для обнаружения непреднамеренных зависимостей теста или снижения влияния утечки теста.
В следующем списке показаны возможные значения метаданных IsolationLevel и опции командной строки и их значения.
Нет
TAEF не изолирует никакие тесты.
Модуль
TAEF будет использовать отдельный хост процесса для каждой тестовой библиотеки DLL.
Это значение по умолчанию.
сборка
То же, что и модуль
DLL
То же, что и модуль
Класс
TAEF будет использовать отдельный процесс-хост для каждого тестового класса.
Метод
TAEF будет использовать отдельный процесс-хост для каждого теста. Если тест находится в группе выполнения, тот же процессор будет использоваться для всей группы выполнения.
Тест
То же, что и метод
Значение метаданных IsolationLevel, которое используется, это те метаданные, которые указаны ближе всего к уровню теста. Если параметр IsolationLevel командной строки также задан, то используется значение, которое обеспечивает большую изоляцию.
BEGIN_MODULE()
MODULE_PROPERTY(L"IsolationLevel", L"Class")
END_MODULE()
class MyTestClass1
{
TEST_CLASS(MyTestClass1);
BEGIN_TEST_METHOD(MyTest1)
TEST_METHOD_PROPERTY(L"IsolationLevel", L"Method")
END_TEST_METHOD()
TEST_METHOD(MyTest2);
TEST_METHOD(MyTest3);
};
class MyTestClass2
{
TEST_CLASS(MyTestClass2);
TEST_METHOD(MyTest1);
TEST_METHOD(MyTest2);
};
В приведенном выше примере используются три разных узла процесса: один для MyTestClass1::MyTest1, один для двух других методов в MyTestClass1 и один для MyTestClass2. Если пользователь должен был добавить /IsolationLevel:Method в командную строку te.exe, будут использоваться пять разных узлов процессов: по одному для каждого теста.
Обратите внимание, что если модуль, класс или тест расширенный метаданными или основан на данных, и их следует изолировать, все метаданные и/или расширение данных изолировано. Это можно предотвратить на уровне теста, сделав тест членом группы выполнения.
class MyTestClass3 :
{
BEGIN_TEST_CLASS(MyTestClass3)
TEST_CLASS_PROPERTY(L"Data:MyParameter1", L"{1, 2, 3}")
TEST_CLASS_PROPERTY(L"IsolationLevel", L"Class")
END_TEST_CLASS()
BEGIN_TEST_METHOD(MyTest1)
TEST_METHOD_PROPERTY(L"Data:MyParameter2", L"{1, 2, 3}")
TEST_METHOD_PROPERTY(L"IsolationLevel", L"Method")
TEST_METHOD_PROPERTY(L"ExecutionGroup", L"MyExecutionGroup")
END_TEST_METHOD()
TEST_METHOD(MyTest2);
TEST_METHOD(MyTest3);
};
В этом примере используются шесть разных хостов процессов. Каждый из трех значений MyParameter1 изолирован, и MyTest1 изолирован от MyTest2 и MyTest3. Три значения MyParameter2 не изолированы, так как они находятся в одной группе выполнения.