Introducción a las plataformas de prueba para .NET

En .NET, un marco de pruebas y una plataforma de prueba son diferentes componentes que funcionan juntos para detectar y ejecutar pruebas.

  • El marco de pruebas define el modelo de prueba contra el cual se escriben las pruebas, como MSTest, NUnit, xUnit.net o TUnit.
  • La plataforma de prueba ejecuta pruebas, se integra con los IDE y la CLI, y proporciona puntos de extensión compartidos.

Puede elegir entre dos plataformas de prueba:

  • VSTest
  • Microsoft. Testing.Platform (MTP)

Sugerencia

Para la configuración más sencilla, elija una plataforma para el repositorio y configure proyectos de prueba, CI y herramientas de forma coherente para esa plataforma. No combine proyectos de prueba basados en VSTest ni basados en MTP .NET en la misma solución o ejecute la configuración porque ese escenario no se admite. Si también ejecuta pruebas que no son de .NET que dependen de VSTest (por ejemplo, pruebas de C++ o JavaScript), ejecute esas pruebas en configuraciones independientes de las pruebas de .NET basadas en MTP.

Cómo elegir la plataforma

Use los escenarios siguientes para elegir rápidamente.

Caso de uso Elegir Por qué
Necesita escenarios nativos de ejecución de pruebas AOT o recorte. MTP MTP admite estos escenarios de implementación modernos, mientras que VSTest no.
Estás probando UWP clásico, .NET UWP moderno con UseUwpu otro proyecto appContainer. VSTest La extensión de aplicación empaquetada de MTP admite hosts de escritorio empaquetados de plena confianza, no hosts de AppContainer.
Está probando una aplicación WinUI 3 desempaquetada. MTP MTP se puede ejecutar dentro de la aplicación WinUI e iniciar su archivo ejecutable directamente.
Estás probando una aplicación WinUI 3 empaquetada de plena confianza. VSTest Use VSTest hasta que la extensión MTP experimental para el registro de paquetes y la activación de AUMID esté disponible en un paquete NuGet público.
Debe mezclar pruebas de .NET y adaptadores de prueba que no son .NET (por ejemplo, adaptadores de JavaScript o C++). VSTest VSTest admite escenarios de adaptadores de lenguaje mixto, mientras que MTP es .NET específico.
Quiere que los proyectos de prueba se comporten como ejecutables normales (dotnet run, ejecución directa de ejecutables, dotnet watch, y flujos F5 del startup). MTP MTP es ejecutable primero, por lo que las aplicaciones de prueba se ejecutan como aplicaciones de .NET estándar en flujos de trabajo locales y de CI.
Confías en integraciones bien establecidas dentro de las herramientas existentes. VSTest VSTest tiene el registro de seguimiento de compatibilidad más largo entre los productos, tareas y canalizaciones existentes. La compatibilidad con MTP está creciendo en el ecosistema, pero algunas integraciones pueden quedarse rezagadas respecto a VSTest.
Prefiere valores predeterminados estrictos y comportamiento explícito. MTP MTP favorece la ejecución determinista con un modelo de extensión ligero, opcional y registro en tiempo de compilación. Por ejemplo, puede producir un error cuando no se ejecutan pruebas, reducen la variabilidad dependiente del entorno y permiten deshabilitar extensiones individuales por entorno.
Tú prefieres valores predeterminados compatibles con versiones anteriores que sean más suaves. VSTest Ambas plataformas se preocupan por la compatibilidad con versiones anteriores. VSTest da prioridad a los valores predeterminados orientados a la compatibilidad para diversas cadenas de herramientas existentes, mientras que MTP proporciona compatibilidad con versiones anteriores dentro de su propio modelo de extensión.
Estás bloqueado por un problema o comportamiento específico de VSTest en su flujo de trabajo actual. MTP En muchos escenarios, el mismo flujo de trabajo no se ve afectado cuando se traslada a MTP debido a diferencias en el modelo de tiempo de ejecución y la arquitectura de extensión.

Si el caso de uso específico no aparece en la lista, ambas plataformas son opciones válidas.

Integración y soporte de herramientas

Área de integración VSTest MTP
Integración del IDE Integración madura en Visual Studio y otras herramientas que dependen del protocolo y los adaptadores de VSTest. Se admite en escenarios de Visual Studio y Visual Studio Code, con el trabajo de integración en curso en partes del ecosistema.
CI y herramientas externas Amplia compatibilidad entre herramientas y tareas de Microsoft y no Microsoft ya establecidas desde hace mucho tiempo. En Azure DevOps, puede usar la tarea VSTest (VSTest@3, vstest.console) o la tarea .NET (DotNetCoreCLI@2, dotnet test). Funciona en flujos de trabajo de CI y .NET modernos, pero algunas integraciones de terceros podrían seguir retrasando VSTest. En Azure DevOps, use la tarea .NET (DotNetCoreCLI@2, dotnet test).
dotnet test comportamiento Modo VSTest predeterminado. Se aplican los argumentos y el comportamiento de VSTest. El modo MTP nativo está disponible en .NET SDK 10 y versiones posteriores.

Para obtener detalles completos sobre dotnet test los modos y argumentos, vea Probar con dotnet test.

Inicio desde el marco de pruebas

Si elige VSTest

Si elige MTP

Pasos siguientes