Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
TAEF provides functionality for pre-configuring a COM threading model for the environment where you test execute. By default, Managed ©#) and Script tests run on STA thread; for Native, threading model is not pre-configured.
The "ThreadingModel" metadata property is used to request a threading model. The supported values for this property are:
Property Value | Description |
---|---|
STA | Single-Threaded Apartment (CoInitializeEx is called with COINIT_APARTMENTTHREADED flag). |
MTA | Multithreaded Apartment (CoInitializeEx is called with COINIT_MULTITHREADED flag). |
None | Threading model is not specified. |
Configuring a threading model
Example: To request MTA threading model from C++ mark-up:
class ThreadModelTests
{
TEST_CLASS(ThreadModelTests);
BEGIN_TEST_METHOD(MTAThreadingModelTest)
TEST_METHOD_PROPERTY(L"ThreadingModel", L"STA")
END_TEST_METHOD()
};
You can also request threading model property for a class or a module. For example,
class ThreadModelTestsWithMTADefault
{
BEGIN_TEST_CLASS(ThreadModelTestsWithMTADefault)
TEST_CLASS_PROPERTY(L"ThreadingModel", L"Mta")
END_TEST_CLASS()
TEST_METHOD(DefaultWithMTASetByClass);
};
Similarly, you can also request threading model for managed 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();
}
}
Notice in the last test above: SetsOfMetadataTest, it is also possible to make use of metadata sets and run the same test: first with STA threading model and then with MTA.