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.