El comando dotnet test
, parte de la CLI de .NET, es fundamental para la ejecución de pruebas, soportando frameworks como MSTest, xUnit, NUnit y TUnit. Tradicionalmente, ha operado sobre plataformas como VSTest. Sin embargo, con .NET 10, se introduce una integración nativa y significativa con Microsoft.Testing.Platform (MTP), marcando un avance crucial en la experiencia de testing.
MTP se presenta como una alternativa ligera y portátil a VSTest, diseñada para ejecutar pruebas en diversos entornos, incluyendo pipelines de integración continua (CI), la línea de comandos (CLI) y los exploradores de pruebas de Visual Studio y VS Code. Su particularidad radica en que se incrusta directamente en los proyectos de prueba, eliminando dependencias externas y simplificando el ecosistema.
La evolución de dotnet test
con MTP ha sido notoria. En .NET 9, la utilización de MTP requería un modo VSTest, lo que implicaba el uso de separadores de argumentos (--
) y la habilitación de la propiedad MSBuild TestingPlatformDotnetTestSupport
. Este enfoque, aunque funcional, presentaba limitaciones que se han resuelto en .NET 10.
La versión actual, .NET 10, simplifica drásticamente la configuración con una integración nativa. Para activarla, basta con crear un archivo dotnet.config
en la raíz de la solución o repositorio, configurándolo con [dotnet.test.runner]
. Esta aproximación elimina la complejidad de los argumentos de línea de comandos y se integra fluidamente con el SDK de .NET, ofreciendo una experiencia de migración mejorada con mayor rendimiento y diagnósticos.
name = "Microsoft.Testing.Platform"
Los beneficios clave de usar MTP con dotnet test
son numerosos:
- Ejecución de Pruebas Unificada: MTP es el futuro de la ejecución de pruebas en .NET, ofreciendo una experiencia más consistente.
- Mejor Rendimiento: Optimizado para grandes suites de pruebas, reduce tiempos de inicio y mejora la velocidad de descubrimiento y ejecución.
- Diagnósticos y Registro Mejorados: Proporciona logs más ricos y estructurados para facilitar la resolución de problemas.
- Ejecución Paralela de Pruebas: Soporta la ejecución de ensamblados de diferentes TFMs, esencial para escalar en CI.
- Argumentos Dinámicos: Los argumentos de prueba ya no son fijos, sino que se vinculan a las extensiones registradas.
- Filtro Globbing: Permite una selección flexible de pruebas mediante patrones.
- Interfaz de Usuario Mejorada: La salida se formatea elegantemente con el uso de terminal ANSI.
Es importante destacar la compatibilidad de proyectos mixtos: si MTP se habilita a través de dotnet.config
, todos los proyectos de prueba en la solución deben usar MTP. Los proyectos VSTest no se ejecutarán en este escenario, lo que requiere una migración completa. Además, con la integración nativa en .NET 10, propiedades MSBuild como TestingPlatformDotnetTestSupport
y TestingPlatformShowTestsFailure
son obsoletas y pueden eliminarse.
Las opciones del comando dotnet test
también han sido actualizadas. La sintaxis tradicional dotnet test <ruta>
ya no es soportada; ahora se deben usar opciones explícitas como --project
, --solution
o --test-modules
para especificar el objetivo. --test-modules
ofrece un potente soporte de patrones globbing para ensamblados precompilados. Se mantienen las opciones de compilación y configuración tradicionales, así como el soporte para propiedades MSBuild.
En resumen, la integración de Microsoft.Testing.Platform en .NET 10 representa un salto cualitativo para las capacidades de testing, brindando una configuración simplificada, rendimiento mejorado, diagnósticos enriquecidos, selección de pruebas flexible y una arquitectura preparada para el futuro. Se recomienda una migración gradual para aprovechar al máximo estas mejoras.