Compartir a través de


Introducción a Microsoft.Testing.Platform

Microsoft.Testing.Platform es una alternativa ligera y portátil a VSTest para ejecutar pruebas en todos los contextos, incluidas las canalizaciones de integración continua (CI), la CLI, el Explorador de pruebas de Visual Studio y el Explorador de pruebas de VS Code. Microsoft.Testing.Platform se inserta directamente en los proyectos de prueba y no hay dependencias de otras aplicaciones, como vstest.console o dotnet test necesarias para ejecutar las pruebas.

Sugerencia

Si necesita ayuda para elegir entre VSTest y Microsoft.Testing.Platform, comience con la introducción a las plataformas de prueba.

Use este artículo cuando ya haya decidido usar Microsoft.Testing.Platform y quiera comprender su modelo, funcionalidades y comportamiento operativo.

Microsoft.Testing.Platform es de código abierto. Puede encontrar el código Microsoft.Testing.Platform en el repositorio de GitHub microsoft/testfx.

Comience aquí

Use la siguiente ruta de acceso, en función de lo que necesite a continuación:

Pilares de Microsoft.Testing.Platform

Esta nueva plataforma de pruebas se basa en la experiencia del equipo de pruebas de experiencia para desarrolladores de .NET y tiene como objetivo abordar los desafíos encontrados desde el lanzamiento de .NET Core en 2016. Aunque hay un alto nivel de compatibilidad entre .NET Framework y .NET Core/.NET, algunas características clave, como el sistema de complementos y los nuevos factores de forma posibles de las compilaciones de .NET, han complicado la evolución o el soporte completo de las nuevas características en tiempo de ejecución con la arquitectura actual de la plataforma VSTest.

Los principales factores de conducción para la evolución de la nueva plataforma de pruebas se detallan en lo siguiente:

  • Determinismo: asegurarse de que la ejecución de las mismas pruebas en contextos diferentes (local, CI) generará el mismo resultado. El nuevo entorno de ejecución no se basa en la reflexión ni en ninguna otra característica dinámica del entorno de ejecución de .NET para coordinar una ejecución de prueba.

  • Transparencia en tiempo de ejecución: el entorno de ejecución de prueba no interfiere con el código del marco de pruebas, no crea contextos aislados como AppDomain o AssemblyLoadContext, y no usa solucionadores de ensamblados personalizados ni reflexión.

  • Registro en tiempo de compilación de extensiones: las extensiones, como marcos de pruebas y extensiones dentro y fuera de proceso, se registran durante el tiempo de compilación para garantizar el determinismo y para facilitar la detección de incoherencias.

  • Dependencias cero: el núcleo de la plataforma es un único ensamblado de .NET, , Microsoft.Testing.Platform.dllque no tiene dependencias distintas de los entornos de ejecución admitidos.

  • Hostable: el entorno de ejecución de prueba se puede hospedar en cualquier aplicación de .NET. Aunque normalmente se usa una aplicación de consola para ejecutar pruebas, puede crear una aplicación de prueba en cualquier tipo de aplicación .NET. Esto le permite ejecutar pruebas en contextos especiales, como dispositivos o exploradores, donde puede haber limitaciones.

  • Compatibilidad con todas las plataformas de .NET: Soporte las plataformas de .NET actuales y futuras, incluido el AOT Nativo.

  • Optimización del rendimiento: búsqueda del equilibrio adecuado entre características y puntos de extensión para evitar la sobrecarga del tiempo de ejecución con código no esencial. La nueva plataforma de prueba está diseñada para "orquestar" una ejecución de pruebas, en lugar de proporcionar detalles de implementación sobre cómo hacerlo.

  • Suficientemente extensible: la nueva plataforma se basa en puntos de extensibilidad para permitir la personalización máxima de la ejecución en tiempo real. Permite configurar el host del proceso de prueba, observar el proceso de prueba y consumir información del marco de pruebas dentro del proceso de host de prueba.

  • Implementación de módulo único: la característica de hospedaje permite un modelo de implementación de módulo único, donde se puede usar un único resultado de compilación para admitir todos los puntos de extensibilidad, tanto fuera de proceso como en proceso, sin necesidad de enviar módulos ejecutables diferentes.

Marcos de prueba admitidos

Plataformas de destino admitidas

Microsoft.Testing.Platform admite .NET (.NET 8 y versiones posteriores), .NET Framework (versiones 4.6.2 y posteriores) y tiene como destino NETStandard 2.0 para obtener la máxima compatibilidad con otros entornos de ejecución.

Ejecutar y depurar pruebas

Para obtener instrucciones detalladas sobre cómo ejecutar y depurar proyectos de prueba de MTP desde la CLI, Visual Studio, Visual Studio Code y canalizaciones de CI, consulte Ejecución y depuración de pruebas.

Opciones

Para obtener la lista completa de opciones de línea de comandos de plataforma y extensión, consulte Referencia de opciones de la CLI de Microsoft.Testing.Platform.

Integración de MSBuild

El paquete de NuGet Microsoft.Testing.Platform.MSBuild aporta diferentes integraciones para Microsoft.Testing.Platform con MSBuild:

  • Compatibilidad con dotnet test Para obtener más información, consulte Prueba con dotnet test.
  • Compatibilidad con ProjectCapability, que necesitan los exploradores de pruebas de Visual Studio y Visual Studio Code.
  • Generación automática del punto de entrada (método Main).
  • Generación automática del archivo de configuración.
  • Detección automática y registro de paquetes de extensión instalados.

Cuando este paquete está activo (el valor predeterminado para los ejecutores MSTest, NUnit y xUnit), la instalación de un paquete NuGet de extensión es todo lo necesario: las extensiones se registran automáticamente sin cambios en el código. Si deshabilita el punto de entrada generado automáticamente estableciendo <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>, debe registrar las extensiones manualmente en el método Main. Cada página de extensión documenta su llamada de registro manual.

Nota:

Esta integración funciona de forma transitiva (un proyecto que hace referencia a otro proyecto que hace referencia a este paquete responderá como si hiciera referencia al paquete) y se pueda deshabilitar a través de la propiedad IsTestingPlatformApplication de MSBuild.

Consulte también