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.
Este artículo es para desarrolladores que crean marcos de pruebas personalizados o extensiones para Microsoft.Testing.Platform.
Nota:
Para obtener código de ejemplo completo, consulte TestingPlatformExamples en el repositorio de Microsoft Test Framework.
Resumen del punto de extensión
| Punto de extensión | En/Fuera del proceso | Propósito |
|---|---|---|
| ITestFramework | En proceso | La única extensión obligatoria. Detecta y ejecuta pruebas. |
| IDataConsumer | En proceso | Se suscribe a los datos de prueba y los procesa desde el bus de mensajes. |
| ITestSessionLifetimeHandler | En proceso | Ejecuta el código antes y después de una sesión de prueba. |
| ITestApplicationLifecycleCallbacks | En proceso | Ejecuta código al principio y al final del host de prueba. |
| ICommandLineOptionsProvider | Ambos | Agrega opciones de línea de comandos personalizadas. |
| ITestHostEnvironmentVariableProvider | Fuera de proceso | Establece las variables de entorno antes de que se inicie el host de prueba. |
| ITestHostProcessLifetimeHandler | Fuera del proceso | Observa externamente el proceso del servidor para pruebas. |
Extensiones dentro del proceso frente a extensiones fuera de proceso
Las extensiones se clasifican en dos tipos:
Las extensiones en proceso se ejecutan dentro del proceso de host de prueba, junto con el marco de pruebas. Regístrelos a través de
builder.TestHost:var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHost.AddXXX(/* ... */);Las extensiones fuera de proceso se ejecutan en un proceso independiente que observa el host de prueba. Regístrelos a través de
builder.TestHostControllers:var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHostControllers.AddXXX(/* ... */);
Las extensiones fuera de proceso son necesarias cuando:
- Debe establecer variables de entorno antes de que se inicie el host de prueba.
- Debe supervisar el host de prueba externamente porque el código de usuario podría bloquearse o bloquear el proceso.
Cuando se registra cualquier extensión fuera del proceso, la plataforma inicia automáticamente un segundo proceso.
Interfaz IExtension
Todos los puntos de extensión heredan de IExtension, que proporciona identificación e inclusión/exclusión:
public interface IExtension
{
string Uid { get; }
string Version { get; }
string DisplayName { get; }
string Description { get; }
Task<bool> IsEnabledAsync();
}
-
Uid: un identificador único para la extensión. Elija un valor único para evitar conflictos. -
Version: La versión de la extensión, usando el versionado semántico. -
DisplayName: nombre descriptivo que aparece en los registros y en la--infosalida. -
Description: descripción que aparece en la--infosalida. -
IsEnabledAsync(): devuelvefalsepara excluir la extensión de la sesión. Normalmente, las decisiones se basan en opciones de configuración o de línea de comandos.
Qué leer a continuación
-
Crear un marco de pruebas: cree una implementación personalizada
ITestFramework, controle las solicitudes y informe de los resultados de las pruebas. - Extensiones de desarrollo: Cree extensiones en proceso y fuera de proceso, como consumidores de datos, controladores de sesión y monitores de procesos.
- VSTest Bridge: simplifica la migración de marcos de pruebas existentes basados en VSTest a Microsoft.Testing.Platform.
- Funcionalidades: declarar y consultar las funcionalidades del marco de trabajo y la extensión.
- Servicios: configuración de acceso, registro, bus de mensajes y otros servicios de plataforma.