Aracılığıyla paylaş


İş Parçacığı Modelleri

TAEF, sınama yaptığınız ortamda COM iş parçacığı modelini önceden yapılandırma özelliği sağlar. Varsayılan olarak, Yönetilen © #) ve Betik testleri STA iş parçacığında çalışır; Yerel için iş parçacığı modeli önceden yapılandırılmamış.

"ThreadingModel" meta veri özelliği, belirli bir iş parçacığı modeli istemek için kullanılır. Bu özellik için desteklenen değerler şunlardır:

Özellik Değeri Açıklama
STA Single-Threaded Apartment (CoInitializeEx, COINIT_APARTMENTTHREADED bayrağıyla çağrılır).
MTA Multithreaded Apartment (CoInitializeEx, COINIT_MULTITHREADED bayrağıyla çağrılır).
Hiç kimse İş parçacığı modeli belirtilmemiş.

İş parçacığı modelini yapılandırma

Örnek: C++ işaretlemesindeki MTA iş parçacığı modelini istemek için:

class ThreadModelTests
{

    TEST_CLASS(ThreadModelTests);

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

Ayrıca bir sınıf veya modül için iş parçacığı modeli özelliği de isteyebilirsiniz. Örneğin

class ThreadModelTestsWithMTADefault
{

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

    TEST_METHOD(DefaultWithMTASetByClass);
};

Benzer şekilde, yönetilen testler için iş parçacığı modelini de talep edebilirsiniz.

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

Yukarıdaki son testte dikkat edin: SetsOfMetadataTest, meta veri kümelerini kullanmak ve aynı testi çalıştırmak da mümkündür: önce STA iş parçacığı oluşturma modeli ve ardından MTA ile.