Dela via


Trådningsmodeller

TAEF ger funktionalitet för att förkonfigurera en COM-trådmodell för miljön där testkörningen äger rum. Som standard körs testerna Managed ©#) och Script på STA-tråden; för Native är trådningsmodellen inte förkonfigurerad.

Metadataegenskapen "ThreadingModel" används för att begära en trådmodell. De värden som stöds för den här egenskapen är:

Egenskapsvärde Beskrivning
STA Single-Threaded Apartment (CoInitializeEx anropas med COINIT_APARTMENTTHREADED-flagga).
MTA Flertrådad lägenhet (CoInitializeEx anropas med flaggan COINIT_MULTITHREADED).
Ingen Trådningsmodellen har inte angetts.

Konfigurera en trådmodell

Exempel: För att hämta MTA-trådningsmodell från C++-markering:

class ThreadModelTests
{

    TEST_CLASS(ThreadModelTests);

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

Du kan också begära egenskapen trådmodell för en klass eller en modul. Ett exempel:

class ThreadModelTestsWithMTADefault
{

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

    TEST_METHOD(DefaultWithMTASetByClass);
};

På samma sätt kan du också begära trådningsmodell för hanterade tester:

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

Observera i det senaste testet ovan: SetsOfMetadataTest, det är också möjligt att använda metadatauppsättningar och köra samma test: först med STA-trådningsmodellen och sedan med MTA.