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 canalizaciones de integración continua (CI), CLI, Explorador de pruebas de Visual Studio y Explorador de texto 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.
Microsoft.Testing.Platform
es de código abierto. Puede encontrar el código Microsoft.Testing.Platform
en el repositorio de GitHub microsoft/testfx.
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 compilaciones de .NET han hecho que evolucione o admita completamente la nueva característica 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
oAssemblyLoadContext
, 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.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 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 todos los factores de forma de .NET: admita los factores de forma actuales y futuros de .NET, incluido AOT nativo.
Rendimiento: búsqueda del equilibrio adecuado entre características y puntos de extensión para evitar el sobredimensionamiento del tiempo de ejecución con código no fundamental. 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.
Lo suficientemente extensible: la nueva plataforma se basa en puntos de extensibilidad para permitir la personalización máxima de la ejecución en tiempo de ejecución. 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
- MSTest. En MSTest, la compatibilidad de
Microsoft.Testing.Platform
se realiza a través del ejecutor de MSTest. - NUnit. En NUnit, la compatibilidad de
Microsoft.Testing.Platform
se realiza a través del Ejecutor de NUnit. - xUnit.net: en xUnit.net, el soporte de
Microsoft.Testing.Platform
se realiza a través del ejecutor de xUnit.net. - TUnit: construido completamente sobre la
Microsoft.Testing.Platform
. Para obtener más información, consulte la documentación sobre TUnit
Ejecución y depuración de pruebas
Los proyectos de prueba Microsoft.Testing.Platform
se compilan como ejecutables que se pueden ejecutar (o depurar) directamente. No hay ninguna consola o comando adicionales de serie de pruebas. La aplicación sale con un código de salida distinto de cero si hay un error, como suele ser la mayoría de los ejecutables. Para obtener más información sobre los códigos de salida conocidos, vea Códigos de salida de Microsoft.Testing.Platform.
Importante
De forma predeterminada, Microsoft.Testing.Platform
recopila datos de telemetría. Para obtener más información y opciones sobre la exclusión, vea Telemetría de Microsoft.Testing.Platform.
Publicar el proyecto de prueba mediante dotnet publish
y ejecutar la aplicación directamente es otra manera de ejecutar las pruebas. Por ejemplo, ejecutando el ./Contoso.MyTests.exe
. En algunos escenarios también es viable usar dotnet build
para generar el archivo ejecutable, pero puede haber casos perimetrales que se deben tener en cuenta, como AOT nativo.
Use dotnet run
El comando dotnet run
se puede usar para compilar y ejecutar el proyecto de prueba. Esta es la manera más sencilla, aunque a veces más lenta, de ejecutar las pruebas. El uso de dotnet run
es práctico al editar y ejecutar pruebas localmente, ya que garantiza que el proyecto de prueba se vuelva a compilar cuando sea necesario. dotnet run
también buscará automáticamente el proyecto en la carpeta actual.
dotnet run --project Contoso.MyTests
Para obtener más información sobre dotnet run
, consulte ejecución de dotnet.
Use dotnet exec
El comando dotnet exec
o dotnet
se usa para ejecutar un proyecto de prueba ya compilado; es una alternativa a ejecutar la aplicación directamente. dotnet exec
requiere la ruta de acceso al archivo DLL del proyecto de prueba compilado.
dotnet exec Contoso.MyTests.dll
o
dotnet Contoso.MyTests.dll
Nota:
Si se proporciona la ruta de acceso al archivo ejecutable del proyecto de prueba (*.exe) se produce un error:
Error:
An assembly specified in the application dependencies manifest
(Contoso.MyTests.deps.json) has already been found but with a different
file extension:
package: 'Contoso.MyTests', version: '1.0.0'
path: 'Contoso.MyTests.dll'
previously found assembly: 'S:\t\Contoso.MyTests\bin\Debug\net8.0\Contoso.MyTests.exe'
Para obtener más información en dotnet exec
, consulte ejecución de dotnet.
Use dotnet test
Microsoft.Testing.Platform
ofrece una capa de compatibilidad con vstest.console.exe
y dotnet test
garantiza que puede ejecutar las pruebas como antes al habilitar un nuevo escenario de ejecución.
dotnet test Contoso.MyTests.dll
Opciones
En la lista siguiente se describen solo las opciones de la plataforma. Para ver las opciones específicas que aporta cada extensión, consulte la página de documentación de la extensión o use la opción --help
.
--diagnostic
Habilita el registro de diagnóstico. El nivel de registro predeterminado es Trace
. El archivo se escribe en el directorio de salida con el siguiente formato de nombre: log_[MMddHHssfff].diag
.
--diagnostic-filelogger-synchronouswrite
Obliga al registrador de archivos integrado a escribir registros de forma sincrónica. Resulta útil para escenarios en los que no desea perder ninguna entrada de registro (si el proceso se bloquea). Esto ralentiza la ejecución de la prueba.
--diagnostic-output-directory
El directorio de salida del registro de diagnóstico; si no se especifica, el archivo se genera en el directorio predeterminado TestResults.
--diagnostic-output-fileprefix
Prefijo del nombre del archivo de registro. Tiene como valor predeterminado "log_"
.
--diagnostic-verbosity
Define el nivel de detalle cuando se usa el modificador --diagnostic
. Los valores disponibles son Trace
, Debug
, Information
, Warning
, Error
o Critical
.
--help
Imprime una descripción de cómo usar el comando.
-ignore-exit-code
Permite omitir algunos códigos de salida distintos de cero y, en su lugar, devolverlos como 0
. Para obtener más información, consulte Omisión de códigos de salida específicos.
--info
Muestra información avanzada sobre la aplicación de prueba de .NET, como:
- La plataforma.
- El entorno.
- Cada proveedor de línea de comandos registrado, como
name
,version
,description
yoptions
. - Cada herramienta registrada, como
command
,name
,version
,description
, y todos los proveedores de línea de comandos.
Esta característica se usa para comprender las extensiones que registrarían la misma opción de línea de comandos o los cambios en las opciones disponibles entre varias versiones de una extensión (o la plataforma).
--list-tests
Enumerar las pruebas disponibles. Las pruebas no se ejecutarán.
--minimum-expected-tests
Especifica el número mínimo de pruebas que se espera que se ejecuten. De forma predeterminada, se espera que se ejecute al menos una prueba.
--results-directory
El directorio donde se guardarán los resultados de pruebas. Si el directorio especificado no existe, se crea. El valor predeterminado es TestResults
en el directorio que contiene la aplicación de prueba.
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 Integración de pruebas de dotnet. - Compatibilidad con
ProjectCapability
, que necesitan los exploradores de pruebas deVisual Studio
yVisual Studio Code
. - Generación automática del punto de entrada (método
Main
). - Generación automática del archivo de configuración.
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.