共用方式為


執行緒模型

TAEF 提供針對測試執行環境預先設定 COM 執行緒模型的功能。 根據預設,Managed © #) 和腳本測試會在 STA 執行緒上執行;針對原生,未預先設定執行緒模型。

「ThreadingModel」 中繼資料屬性是用來要求執行緒模型。 此屬性的支援值為:

屬性值 描述
STA Single-Threaded Apartment (CoInitializeEx 是以 COINIT_APARTMENTTHREADED 旗標) 呼叫。
MTA 使用 COINIT_MULTITHREADED 旗標) 呼叫多執行緒 Apartment (CoInitializeEx。
未指定執行緒模型。

設定執行緒模型

範例:若要向 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。