Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
TAEF предоставляет функциональные возможности для предварительной настройки модели потоков COM для среды, в которой выполняется тестирование. По умолчанию управляемые ©#) и скриптовые тесты выполняются в потоке STA; для нативных моделей потоки не настроены.
Свойство метаданных ThreadingModel используется для запроса модели потоков. Поддерживаемые значения для этого свойства:
Значение свойства | Описание |
---|---|
STA | Single-Threaded Apartment (CoInitializeEx вызывается с флагом COINIT_APARTMENTTHREADED). |
MTA | Многопоточная квартира (CoInitializeEx вызывается с флагом COINIT_MULTITHREADED). |
Отсутствует | Модель потоков не указана. |
Настройка модели потоков
Пример: запрос модели потоков MTA с помощью разметки C++.
class ThreadModelTests
{
TEST_CLASS(ThreadModelTests);
BEGIN_TEST_METHOD(MTAThreadingModelTest)
TEST_METHOD_PROPERTY(L"ThreadingModel", L"STA")
END_TEST_METHOD()
};
Можно также запросить свойство модели потоков для класса или модуля. Например
class ThreadModelTestsWithMTADefault
{
BEGIN_TEST_CLASS(ThreadModelTestsWithMTADefault)
TEST_CLASS_PROPERTY(L"ThreadingModel", L"Mta")
END_TEST_CLASS()
TEST_METHOD(DefaultWithMTASetByClass);
};
Аналогичным образом можно также запросить модель потоков для управляемых тестов:
[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();
}
}
Обратите внимание, что в предыдущем тесте выше: SetOfMetadataTest также можно использовать наборы метаданных и выполнить тот же тест: сначала с моделью потоков STA, а затем с MTA.