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, incluida la integración continua (CI), la CLI, pipelines, 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 open source. Puede encontrar código Microsoft.Testing.Platform en microsoft/testfx GitHub repositorio.

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 .NET Developer Experience Testing 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 posibles nuevos formatos de compilaciones de .NET han hecho que sea complejo desarrollar o admitir completamente la nueva característica en tiempo de ejecución con la arquitectura de la plataforma actual 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 runtime no se basa en reflection ni en ninguna otra característica dinámica del tiempo 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.

  • Zero dependencies: El núcleo de la plataforma es un único ensamblado .NET, Microsoft.Testing.Platform.dll, que 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 una aplicación de consola se usa normalmente 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.

  • Soporte para todos los factores de forma de .NET: Admite los factores de forma de .NET actuales y futuros, incluido 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 prueba, 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 la ejecución y depuración de proyectos de prueba de MTP desde la CLI, Visual Studio, código de Visual Studio y ci pipelines, consulte Ejecutar y depurar 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 requerida por Visual Studio y Visual Studio Code exploradores de pruebas.
  • 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 se comportará como si hiciera referencia al paquete) y se puede deshabilitar a través de la propiedad IsTestingPlatformApplication MSBuild.

Consulte también