Compartir a través de


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.