Threadingmodelle
TAEF bietet Funktionen zum Vorkonfigurieren eines COM-Threadingmodells für die Umgebung, in der Sie den Test ausführen. Standardmäßig werden verwaltete © #)- und Skripttests im STA-Thread ausgeführt. für systemeigenes Threadingmodell ist nicht vorkonfiguriert.
Die Metadateneigenschaft "ThreadingModel" wird verwendet, um ein Threadingmodell anzufordern. Die unterstützten Werte für diese Eigenschaft sind:
Eigenschaftswert | BESCHREIBUNG |
---|---|
STA | Single-Threaded Apartment (CoInitializeEx wird mit COINIT_APARTMENTTHREADED Flag aufgerufen). |
MTA | Multithreaded Apartment (CoInitializeEx wird mit COINIT_MULTITHREADED Flag aufgerufen). |
Keine | Threadingmodell ist nicht angegeben. |
Konfigurieren eines Threadingmodells
Beispiel: So fordern Sie das MTA-Threadingmodell vom C++-Markup an:
class ThreadModelTests
{
TEST_CLASS(ThreadModelTests);
BEGIN_TEST_METHOD(MTAThreadingModelTest)
TEST_METHOD_PROPERTY(L"ThreadingModel", L"STA")
END_TEST_METHOD()
};
Sie können auch eine Threadingmodelleigenschaft für eine Klasse oder ein Modul anfordern. Beispiel:
class ThreadModelTestsWithMTADefault
{
BEGIN_TEST_CLASS(ThreadModelTestsWithMTADefault)
TEST_CLASS_PROPERTY(L"ThreadingModel", L"Mta")
END_TEST_CLASS()
TEST_METHOD(DefaultWithMTASetByClass);
};
Ebenso können Sie auch ein Threadingmodell für verwaltete Tests anfordern:
[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();
}
}
Beachten Sie im letzten Test oben: SetsOfMetadataTest, es ist auch möglich, Metadatensätze zu verwenden und denselben Test auszuführen: zuerst mit STA-Threadingmodell und dann mit MTA.