Modelos de subprocesos
TAEF proporciona funcionalidad para configurar previamente un modelo de subprocesos COM para el entorno en el que se prueba la ejecución. De forma predeterminada, las pruebas administradas © #) y Script se ejecutan en el subproceso STA; para Native, el modelo de subprocesos no está preconfigurado.
La propiedad de metadatos "ThreadingModel" se usa para solicitar un modelo de subprocesos. Los valores admitidos para esta propiedad son:
Valor de propiedad | Descripción |
---|---|
STA | Single-Threaded Apartment (Se llama a CoInitializeEx con COINIT_APARTMENTTHREADED marca). |
MTA | Apartamento multiproceso (Se llama a CoInitializeEx con COINIT_MULTITHREADED marca). |
Ninguno | No se especifica el modelo de subprocesos. |
Configuración de un modelo de subprocesos
Ejemplo: para solicitar el modelo de subprocesos de MTA desde el marcado de C++:
class ThreadModelTests
{
TEST_CLASS(ThreadModelTests);
BEGIN_TEST_METHOD(MTAThreadingModelTest)
TEST_METHOD_PROPERTY(L"ThreadingModel", L"STA")
END_TEST_METHOD()
};
También puede solicitar la propiedad del modelo de subprocesos para una clase o un módulo. Por ejemplo,
class ThreadModelTestsWithMTADefault
{
BEGIN_TEST_CLASS(ThreadModelTestsWithMTADefault)
TEST_CLASS_PROPERTY(L"ThreadingModel", L"Mta")
END_TEST_CLASS()
TEST_METHOD(DefaultWithMTASetByClass);
};
Del mismo modo, también puede solicitar el modelo de subprocesos para pruebas administradas:
[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();
}
}
Observe en la última prueba anterior: SetsOfMetadataTest, también es posible usar conjuntos de metadatos y ejecutar la misma prueba: primero con el modelo de subprocesos STA y, a continuación, con MTA.