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.
Le damos la bienvenida a nuestra nueva plataforma de prueba. Para ayudarle a familiarizarse con sus funcionalidades, comenzaremos con un ejemplo sencillo que muestra cómo registrar y ejecutar una prueba. Este ejemplo fundamental le proporcionará una comprensión sólida de la funcionalidad básica y cómo empezar a trabajar rápidamente.
Nota:
Todos los conceptos de este artículo se ejemplifican en el repositorio de Microsoft Test Framework como ejemplo completo. Para obtener más información, consulte El código de ejemplo.
Paso 1: Registrar y ejecutar una aplicación de prueba sencilla
En este ejemplo inicial, recorrerá los pasos básicos para declarar y ejecutar una aplicación de prueba. Este enfoque sencillo garantiza que puede empezar a usar inmediatamente la plataforma con una configuración mínima.
Paso 2: Extender la plataforma
Una vez que haya descubierto cómo crear la primera aplicación de prueba, explorará un ejemplo de extensión para cubrir parcialmente los conceptos que rodean las extensiones de aplicación de prueba.
Paso 3: Información general completa de los puntos de extensión
Una vez que esté familiarizado con los conceptos básicos, profundizará en los distintos puntos de extensión. Esto incluirá:
Funcionalidades del marco de pruebas y plataforma de pruebas: comprender la gama completa de funcionalidades proporcionadas por la plataforma y el marco de pruebas, lo que le permite aprovecharlas de forma eficaz.
Marco de pruebas personalizado: cómo escribir y registrar el marco de pruebas personalizado, lo que le permite adaptar el entorno de pruebas a sus requisitos específicos.
In-Process y extensiones fuera de proceso: instrucciones detalladas sobre cómo escribir y registrar extensiones en proceso y fuera de proceso, lo que ofrece flexibilidad en la forma de ampliar la plataforma.
Orden de ejecución: aclara el orden de ejecución de los distintos puntos de extensión para garantizar una integración y un funcionamiento sin problemas de las extensiones personalizadas.
Paso 4: Servicios y asistentes disponibles
Por último, revise una lista exhaustiva de los servicios disponibles y las funciones auxiliares dentro de la plataforma. Esta sección servirá como referencia para ayudarle a aprovechar todas las herramientas a su disposición para crear extensiones de prueba sólidas y eficaces.
Siguiendo este enfoque estructurado, obtendrá una comprensión completa de nuestra plataforma de prueba, desde el uso básico hasta la personalización avanzada. Comencemos y exploremos el potencial completo de lo que nuestra plataforma puede ofrecer.
Paso 1: Registrar y ejecutar una aplicación de prueba sencilla
Para introducir la arquitectura de la plataforma de prueba, este documento usará la aplicación de consola clásica (para Windows) como host. Los ejemplos de este documento se escriben en C#, pero puede usar la plataforma de prueba con cualquier lenguaje que admita la especificación ecma de .NET y ejecutarse en cualquier sistema operativo compatible con .NET. Para usar la plataforma, simplemente haga referencia al ensamblado Microsoft.Testing.Platform.dll
, que se puede consumir a través del paquete NuGet oficial disponible en https://www.nuget.org/packages/Microsoft.Testing.Platform.
En un proyecto Contoso.UnitTests.exe
de consola, el método siguiente Main
define el punto de entrada:
public static async Task<int> Main(string[] args)
{
ITestApplicationBuilder builder = await TestApplication.CreateBuilderAsync(args);
builder.RegisterTestFramework();
using ITestApplication testApp = await builder.BuildAsync();
return await testApp.RunAsync();
}
Este código incluye todo lo necesario para ejecutar una sesión de prueba, excepto para registrar el framework de prueba como MSTest a través de RegisterTestFramework
. Este código se muestra y se explica en secciones posteriores.
Nota:
El comportamiento predeterminado es que la tarea MSBuild de la plataforma de pruebas genere automáticamente el punto de entrada. Para ello, agregue el Microsoft.Testing.Platform.MSBuild
paquete al proyecto.
Cuando Contoso.UnitTests.exe
se inicia una aplicación, se crea un proceso estándar de Windows y la plataforma de pruebas interactúa con el marco de pruebas registrado para ejecutar la sesión de prueba.
Se crea un único proceso para llevar a cabo este trabajo:
La plataforma de pruebas incluye un dispositivo de visualización integrado que escribe la información de la sesión de prueba en el terminal, similar a:
Microsoft(R) Testing Platform Execution Command Line Tool
Version: 1.1.0+8c0a8fd8e (UTC 2024/04/03)
RuntimeInformation: win-x64 - .NET 9.0.0-preview.1.24080.9
Copyright(c) Microsoft Corporation. All rights reserved.
Passed! - Failed: 0, Passed: 1, Skipped: 0, Total: 1, Duration: 5ms - Contoso.UnitTests.dll (win-x64 - .NET 9.0.0-preview.1.24080.9)
Nota:
Los códigos de salida conocidos devueltos por la ITestApplication.RunAsync()
llamada se detallan en los códigos de salida de la plataforma.
Paso 2: Extender la plataforma
Las ejecuciones de pruebas suelen recopilar información de cobertura de código o información similar para evaluar la calidad del código. Estas cargas de trabajo pueden requerir configuración antes de que se inicie el proceso de host de prueba, por ejemplo, estableciendo variables de entorno.
La plataforma de pruebas admite esto al tener extensiones fuera del proceso . Cuando se ejecuta con extensiones fuera de proceso, la plataforma de pruebas iniciará varios procesos y los administrará correctamente.
En el ejemplo siguiente se muestra cómo registrar una característica de cobertura de código mediante una extensión TestHostController .
ITestApplicationBuilder builder = await TestApplication.CreateBuilderAsync(args);
builder.RegisterTestFramework();
builder.AddCodeCoverage();
using ITestApplication testApp = await builder.BuildAsync();
return await testApp.RunAsync();
El builder.AddCodeCoverage();
usa internamente el TestHostController
punto de extensibilidad, que es un punto de extensibilidad fuera del proceso.
public static class TestApplicationBuilderExtensions
{
public static ITestApplicationBuilder AddCodeCoverage(
this ITestApplicationBuilder builder)
{
builder.TestHostControllers
.AddEnvironmentVariableProvider(/* ... */);
// ...
return builder;
}
}
Los parámetros de la API AddEnvironmentVariableProvider
se explicarán en secciones posteriores.
Cuando se ejecuta Contoso.UnitTests.exe
esta vez, la plataforma de prueba detecta que se registra una TestHostController
extensión. Como resultado, inicia otra instancia del Contoso.UnitTests.exe
proceso como un proceso secundario. Esto se hace para establecer correctamente las variables de entorno según sea necesario para la extensión registrada con la AddEnvironmentVariableProvider
API.
El diseño del proceso tiene este aspecto:
Nota:
En el ejemplo proporcionado se presupone un diseño de aplicación de consola, que controla el proceso de inicio correctamente y propaga todos los argumentos de la línea de comandos al proceso secundario. Si usa un host diferente, debe asegurarse de que el código de punto de entrada reenvía correctamente el punto de entrada del proceso (el "Main") al bloque de código adecuado. El entorno de ejecución simplemente se inicia a sí mismo con los mismos argumentos de la línea de comandos.
En la sección anterior se proporciona una breve introducción a la arquitectura de la plataforma de pruebas. Los puntos de extensibilidad actuales se dividen en dos categorías:
Las extensiones en proceso se pueden acceder a través de la
TestHost
propiedad del generador de aplicaciones de prueba. En proceso significa que se ejecutarán en el mismo proceso que el marco de pruebas.ITestApplicationBuilder builder = await TestApplication.CreateBuilderAsync(args); builder.RegisterTestFramework(); builder.TestHost.AddXXX(/* ... */);
Como se observa, el punto de extensión más crucial es el marco de pruebas en proceso (
RegisterTestFramework
), que es el único obligatorio .Se puede acceder a las extensiones fuera del proceso a través de la
TestHostControllers
propiedad del generador de aplicaciones de prueba. Estas extensiones se ejecutan en un proceso independiente del marco de pruebas para "observarlo".ITestApplicationBuilder builder = await TestApplication.CreateBuilderAsync(args); builder.TestHostControllers.AddXXX(/* ... */);
Paso 3: Información general completa de los puntos de extensión
Empecemos por familiarizarnos con el concepto de funcionalidades antes de profundizar en los distintos puntos de extensiones.
Paso 4: Servicios disponibles
La plataforma de pruebas ofrece servicios valiosos tanto para el marco de pruebas como para los puntos de extensión. Estos servicios satisfacen las necesidades comunes, como el acceso a la configuración, el análisis y la recuperación de argumentos de la línea de comandos, la obtención del generador de registros y el acceso al sistema de registro, entre otros. IServiceProvider
implementa el patrón de localizador de servicios para la plataforma de pruebas.
Todos los servicios, asistentes e información técnica sobre cómo acceder y usar estos servicios se muestran en la documentación de Microsoft.Testing.Platform Services.