스레딩 모델
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를 사용합니다.