Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
MSTest proporciona un ciclo de vida bien definido para las clases de prueba y los métodos de prueba, lo que permite realizar operaciones de configuración y desmontaje en varias fases del proceso de ejecución de pruebas. El ciclo de vida se puede agrupar en las tres fases siguientes:
- Ciclo de vida a nivel de ensamblaje
- Ciclo de vida a nivel de clase
- Ciclo de vida de nivel de prueba
La ejecución de los eventos de ciclo de vida se produce desde el nivel más alto (ensamblado) hasta el nivel más bajo (método de prueba). El orden de ejecución es el siguiente:
- Inicialización del ensamblado
- Inicialización de clases (para cada clase de prueba)
- Inicialización de pruebas (para cada método de prueba)
- Ejecución de pruebas
- Limpieza de pruebas (para cada método de prueba)
- Limpieza de clases (para cada clase de prueba)
- Limpieza de ensamblados
Ciclo de vida de nivel de ensamblado
El ciclo de vida del ensamblado describe el ciclo de vida de todo el ensamblado, que incluye todas las clases y métodos de prueba. Para administrar el ciclo de vida del ensamblado, MSTest proporciona los atributos AssemblyInitialize y AssemblyCleanup . Para obtener más información sobre estos atributos, consulte la documentación assemblyInitialize y AssemblyCleanup .
Ciclo de vida a nivel de clase
El ciclo de vida de la clase de prueba hace referencia al ciclo de vida de las clases de prueba individuales dentro del ensamblado y se puede implementar mediante los atributos ClassInitialize y ClassCleanup . Estos atributos permiten definir métodos de instalación y desmontaje que se ejecutan antes y después de todas las pruebas de una clase, respectivamente. Para obtener más información sobre estos atributos, consulte la documentación classInitialize y ClassCleanup . El ciclo de vida del nivel de clase solo se ejecuta una vez por clase, independientemente del número de pruebas de una clase.
Ciclo de vida de nivel de prueba
El ciclo de vida del nivel de prueba se ejecuta para cada método de prueba. Para las pruebas con parámetros, cada conjunto de parámetros se trata como un método de prueba independiente y el ciclo de vida se ejecuta para cada conjunto de parámetros. El ciclo de vida de la prueba por nivel se agrupa en configuración, ejecución y limpieza; con configuración y limpieza admitiendo varias maneras de implementación.
Configuración
La fase de configuración del ciclo de vida de nivel de prueba es responsable de preparar el entorno de prueba antes de la ejecución de cada método de prueba. Esto se puede lograr mediante el TestInitialize
atributo o implementando un constructor en la clase de prueba. En el caso de herencia, la ejecución de TestInitialize
métodos sigue el orden de la clase base a la clase derivada. Si una clase de prueba implementa un constructor, se ejecuta antes del TestInitialize
método . Para más información sobre el TestInitialize
atributo, consulte la documentación del atributo de nivel de prueba .
Nota:
A diferencia del constructor de clases, TestInitialize
los métodos pueden ser asincrónicos y también admiten el uso de atributos como TimeoutAttribute
.
Ejecución
La fase de ejecución es la fase en la que se ejecuta el método de prueba real. Si un método de prueba devuelve un Task o ValueTask, el método de prueba será esperado.
Advertencia
En el caso de los métodos de prueba asincrónicos, no se proporciona SynchronizationContext . Esto no se aplica a UITestMethod
las pruebas para UWP y WinUI, ya que se ejecutan en el subproceso de interfaz de usuario que tiene un SynchronizationContext.
Limpieza
La fase de limpieza del ciclo de vida del nivel de prueba es responsable de limpiar el entorno de prueba después de la ejecución de cada método de prueba.
Esto se puede lograr mediante el TestCleanup
atributo o implementando la IDisposable
/IAsyncDisposable
interfaz en la clase de prueba.
Si una clase de prueba implementa IDisposable
o IAsyncDisposable
, su Dispose
/DisposeAsync
método se ejecuta después del TestCleanup
método .
En caso de herencia, la ejecución de TestCleanup
métodos sigue el orden de la clase derivada a la clase base.
Para más información sobre el TestInitialize
atributo, consulte la documentación del atributo de nivel de prueba .
Pedido
El orden completo del ciclo de vida del nivel de prueba es el siguiente:
- Creación de una instancia de la clase de prueba
- Establecer la propiedad
TestContext
si está presente - Ejecutar TestInitialize (si se implementa)
- Ejecución del método de prueba
- Actualiza
TestContext
con los resultados de prueba (como la propiedadOutcome
) - Ejecutar TestCleanup si está implementado
- Ejecución de DisposeAsync si se implementa
- Ejecute Dispose si está implementado