테스트 격리

TAEF는 격리된 프로세스에서 테스트 실행을 지원합니다. 이러한 프로세스가 IsolationLevel 메타데이터 및 명령줄 옵션으로 대체되는 시기를 제어할 수 있습니다. 이는 의도하지 않은 테스트 종속성을 검색하거나 누수 테스트의 영향을 줄이는 데 유용할 수 있습니다.

다음 목록에서는 IsolationLevel 메타데이터 및 명령줄 옵션의 가능한 값과 그 의미를 보여 줍니다.

None
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용입니다. 사용자가 te.exe 명령줄에 /IsolationLevel:Method를 추가하려는 경우 5개의 서로 다른 프로세스 호스트(각 테스트에 대해 하나씩)가 사용됩니다.

모듈, 클래스 또는 테스트가 메타데이터 확장 또는 데이터 기반 이고 격리될 경우 각 메타데이터 및/또는 데이터 확장이 격리됩니다. 테스트를 실행 그룹의 멤버로 만들어 테스트 수준에서 이를 방지할 수 있습니다.

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);
};

이 예제에서는 6개의 서로 다른 프로세스 호스트가 사용됩니다. MyParameter1의 세 값은 각각 격리되고 MyTest1은 MyTest2 및 MyTest3에서 격리됩니다. MyParameter2의 세 값은 동일한 실행 그룹에 있으므로 격리되지 않습니다.