스레딩 모델

TAEF는 테스트를 실행하는 환경에 대한 COM 스레딩 모델을 미리 구성하는 기능을 제공합니다. 기본적으로 관리형 © #) 및 스크립트 테스트는 STA 스레드에서 실행됩니다. 네이티브의 경우 스레딩 모델이 미리 구성되어 있지 않습니다.

"ThreadingModel" 메타데이터 속성은 스레딩 모델을 요청하는 데 사용됩니다. 이 속성에 대해 지원되는 값은 다음과 같습니다.

속성 값 Description
STA Single-Threaded Apartment(CoInitializeEx는 COINIT_APARTMENTTHREADED 플래그로 호출됨).
MTA 다중 스레드 아파트먼트(CoInitializeEx는 COINIT_MULTITHREADED 플래그로 호출됨).
없음 스레딩 모델이 지정되지 않았습니다.

스레딩 모델 구성

예: C++ 마크업에서 MTA 스레딩 모델을 요청하려면 다음을 수행합니다.

class ThreadModelTests
{

    TEST_CLASS(ThreadModelTests);

    BEGIN_TEST_METHOD(MTAThreadingModelTest)
        TEST_METHOD_PROPERTY(L"ThreadingModel", L"STA")
    END_TEST_METHOD()
};

클래스 또는 모듈에 대한 스레딩 모델 속성을 요청할 수도 있습니다. 예를 들면 다음과 같습니다.

class ThreadModelTestsWithMTADefault
{

    BEGIN_TEST_CLASS(ThreadModelTestsWithMTADefault)
        TEST_CLASS_PROPERTY(L"ThreadingModel", L"Mta")
    END_TEST_CLASS()

    TEST_METHOD(DefaultWithMTASetByClass);
};

마찬가지로 관리 테스트에 대한 스레딩 모델을 요청할 수도 있습니다.

[TestClass]

public class SimpleTests
{
    [TestMethod]
    [TestProperty("ThreadingModel", "MTA")]
    public void Test1()
    {
        Verify.IsTrue(true);
    }

    [TestMethod]
    [TestProperty("ThreadingModel", "STA")]
    public void Test2()
    {
        Verify.IsTrue(true);
    }

    [TestMethod]
    [TestProperty("ThreadingModel", "{STA; MTA}")]
    public void SetsOfMetadataTest()
    {
        Log.Comment("In CSharpThreadingModelExample.SetsOfMetadataTest");
        DisplayAppartmentState();
    }
}

위의 마지막 테스트인 SetsOfMetadataTest에서 메타데이터 집합을 사용하고 동일한 테스트를 실행할 수도 있습니다. 먼저 STA 스레딩 모델을 사용한 다음 MTA를 사용합니다.