Delen via


Threading-modellen

TAEF biedt functionaliteit voor het vooraf configureren van een COM-threadingmodel voor de omgeving waarin u de test uitvoert. Standaard worden beheerde en scripttests uitgevoerd op een STA-thread; voor native modellen is het threadingmodel niet vooraf geconfigureerd.

De metadata-eigenschap 'ThreadingModel' wordt gebruikt om een threadingmodel aan te vragen. De ondersteunde waarden voor deze eigenschap zijn:

Eigenschapswaarde Beschrijving
STA Single-Threaded Appartement (CoInitializeEx wordt aangeroepen met de COINIT_APARTMENTTHREADED vlag).
MTA Multithreaded Apartment (CoInitializeEx wordt aangeroepen met COINIT_MULTITHREADED vlag).
Geen Het threadingmodel is niet opgegeven.

Een threadingmodel configureren

Voorbeeld: Het MTA-threadingmodel aanvragen via C++-markup:

class ThreadModelTests
{

    TEST_CLASS(ThreadModelTests);

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

U kunt ook een threadingmodel-eigenschap aanvragen voor een klasse of een module. Bijvoorbeeld

class ThreadModelTestsWithMTADefault
{

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

    TEST_METHOD(DefaultWithMTASetByClass);
};

Op dezelfde manier kunt u ook een threadingmodel aanvragen voor beheerde tests:

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

In de laatste test hierboven, SetsOfMetadataTest, is het ook mogelijk gebruik te maken van metagegevenssets en dezelfde test uit te voeren: eerst met het STA-threadingmodel en vervolgens met MTA.