병렬

TAEF는 여러 프로세서에서 동시에 테스트를 실행하는 메커니즘을 제공합니다.

병렬 처리 보장

  • 병렬 처리 가능으로 표시되지 않은 두 테스트는 동시에 실행되지 않습니다.
  • 병렬 테스트는 다른 병렬 및 비 병렬 테스트와 동시에 실행할 수 있습니다.
  • 모든 모듈/클래스/테스트 설정 및 클린 동일한 프로세스에서 관련 테스트 전후에 선형으로 실행됩니다.
  • 모듈/클래스 설정은 모듈 또는 클래스에 하나 이상의 병렬 테스트가 포함된 경우 다른 프로세스에서 병렬로 실행될 수 있습니다.
  • 병렬 실행 모드는 "/inproc" 실행 메커니즘과 호환되지 않습니다.

테스트를 병렬 처리 가능으로 표시

예제(네이티브 코드):

class MyTests
{

    TEST_CLASS(MyTests);

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

TAEF의 다른 일반 메타데이터와 마찬가지로 클래스 또는 모듈 수준에서 지정할 수 있으며 해당 클래스 또는 모듈에 포함된 모든 테스트에서 상속됩니다. 예를 들어 전체 어셈블리를 병렬 처리 가능으로 표시하려면 테스트 DLL로 컴파일된 cpp 파일에서 다음(클래스 또는 테스트 사양 외부)을 수행할 수 있습니다.

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