Compartir a través de


Pruebas con "dotnet test"

En este artículo se proporciona información detallada sobre el comando de la dotnet test CLI, incluida la compatibilidad del historial con VSTest y Microsoft.Testing.Platform (MTP).

El dotnet test comando funciona en dos modos principales:

  • Modo VSTest : este es el modo predeterminado para dotnet test y era el único modo disponible antes del SDK de .NET 10. Está diseñado principalmente para VSTest, pero también puede ejecutar pruebas de Microsoft.Testing.Platform a través del paquete NuGet Microsoft.Testing.Platform.MSBuild .
  • Modo Microsoft.Testing.Platform: introducido con el SDK de .NET 10, este modo admite exclusivamente aplicaciones de prueba creadas con Microsoft.Testing.Platform.

Sugerencia

Para consultar la referencia de la CLI, consulte dotnet test.

Modo VSTest de dotnet test

Durante mucho tiempo, VSTest era la única plataforma de prueba en .NET. Por lo tanto, dotnet test se diseñó exclusivamente para VSTest, con todas las opciones de línea de comandos adaptadas a VSTest.

El proceso implica invocar el VSTest destino de MSBuild, que desencadena otros destinos internos para ejecutarse y, en última instancia, ejecuta vstest.console. Todas las dotnet test opciones de línea de comandos se traducen a sus equivalentes en vstest.console.

Ejecución de proyectos MTP con el modo VSTest

dotnet test se diseñó para ejecutar proyectos de VSTest en modo VSTest. Sin embargo, puede ejecutar proyectos MTP en dotnet test modo VSTest mediante el paquete Microsoft.Testing.Platform.MSBuild . Desde la perspectiva del usuario, este soporte está habilitado estableciendo la propiedad MSBuild TestingPlatformDotnetTestSupport a true, ya que de forma predeterminada está false por razones de compatibilidad con versiones anteriores. Cuando esta propiedad se establece en true, Microsoft.Testing.Platform.MSBuild cambia el comportamiento del objetivo VSTest, redirigiéndolo para llamar a InvokeTestingPlatform. InvokeTestingPlatform es un destino de MSBuild incluido en Microsoft.Testing.Platform.MSBuild responsable de ejecutar correctamente las aplicaciones de prueba de MTP como ejecutables. Las opciones de línea de comandos específicas de VSTest, como --logger, se omiten silenciosamente en este modo. Para incluir argumentos específicos de MTP, como --report-trx, debe anexarlos después de un elemento adicional --. Por ejemplo: dotnet test -- --report-trx.

Nota:

MSTest y NUnit usan el paquete Microsoft.Testing.Extensions.VSTestBridge . Al establecer EnableMSTestRunner o EnableNUnitRunner (que habilita Microsoft.Testing.Platform), el proyecto de prueba admitirá VSTest y Microsoft.Testing.Platform. En ese escenario, si usa el modo VSTest de dotnet test y no establece TestingPlatformDotnetTestSupport en verdadero, básicamente está ejecutando completamente con VSTest, como si EnableMSTestRunner y EnableNUnitRunner no estuvieran establecidos en verdadero.

Nota:

Se recomienda encarecidamente establecer la TestingPlatformDotnetTestSupport propiedad en Directory.Build.props. Esto garantiza que no es necesario agregarlo a cada archivo de proyecto de prueba individualmente. Además, evita el riesgo de introducir un nuevo proyecto de prueba que no establece esta propiedad, lo que podría dar lugar a una solución en la que algunos proyectos usan VSTest, mientras que otros usan Microsoft.Testing.Platform. Esta configuración mixta podría no funcionar correctamente y es un escenario no admitido.

En la lista siguiente se describen las opciones de la línea de comandos del dotnet test modo VSTest compatibles con Microsoft.Testing.Platform. Estas opciones son específicas del proceso de compilación y no se pasan a VSTest, por lo que funcionan con MTP.

  • -a|--arch <ARCHITECTURE>
  • --artifacts-path <ARTIFACTS_DIR>
  • -c|--configuration <CONFIGURATION>
  • -f|--framework <FRAMEWORK>
  • -e|--environment <NAME="VALUE">
  • --interactive
  • --no-build
  • --nologo
  • --no-restore
  • -o|--output <OUTPUT_DIRECTORY>
  • --os <OS>
  • -r|--runtime <RUNTIME_IDENTIFIER>
  • -v|--verbosity <LEVEL>

Sugerencia

Puede personalizar los argumentos de la línea de comandos de la aplicación de prueba a través TestingPlatformCommandLineArguments de la propiedad MSBuild:

<PropertyGroup>
  ...
  <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>

Para obtener más información específica sobre la ejecución de proyectos MTP en el modo VSTest de dotnet test, vea Uso de Microsoft.Testing.Platform con el modo VSTest de dotnet test.

Detalles técnicos avanzados

En el dotnet test modo VSTest de , se utiliza -- para indicar los argumentos de RunSettings. Originalmente, dotnet test se diseñó para pasar esos argumentos como una propiedad de MSBuild denominada VSTestCLIRunSettings. Por lo tanto, al ejecutar aplicaciones de prueba de MTP en el modo VSTest, se reasigna el valor de VSTestCLIRunSettings para representar los "argumentos de la aplicación".

Mezcla de VSTest y Microsoft.Testing.Platform (MTP)

Cuando se ejecuta dotnet test en modo VSTest, se recomienda evitar incluir VSTest y Microsoft.Testing.Platform en la misma solución.

Este escenario no se admite oficialmente y debe tener en cuenta lo siguiente:

  • Las opciones de línea de comandos específicas de VSTest solo se aplicarán a los proyectos de VSTest y no a las aplicaciones de prueba de MTP.
  • Las opciones de línea de comandos específicas de MTP proporcionadas después -- se tratarán como argumentos RunSettings para proyectos de VSTest.

Conclusiones clave

  • Para ejecutar aplicaciones de prueba de MTP en dotnet test modo VSTest , debe usar Microsoft.Testing.Platform.MSBuild, pasar las opciones de línea de comandos específicas de MTP después del -- adicional y establecer TestingPlatformDotnetTestSupport en true.
  • Las opciones de línea de comandos orientadas a VSTest se omiten silenciosamente.

Debido a estos problemas, .NET ha introducido un nuevo dotnet test modo diseñado específicamente para MTP. Animamos a los usuarios de MTP a pasar del modo VSTest dotnet test al nuevo modo con el SDK de .NET 10.

Modo Microsoft.Testing.Platform (MTP) de dotnet test

Para solucionar los problemas detectados al ejecutar dotnet test con MTP en modo VSTest, .NET introdujo un nuevo modo en el SDK de .NET 10 diseñado específicamente para MTP.

Para habilitar este modo, agregue un dotnet.config archivo a la raíz del repositorio o solución.

[dotnet.test.runner]
name = "Microsoft.Testing.Platform"

Importante

La experiencia dotnet test para MTP solo se admite en la Microsoft.Testing.Platform versión 1.7 y posteriores.

Dado que este modo está diseñado específicamente para Microsoft.Testing.Platform, no se requieren ni TestingPlatformDotnetTestSupport ni -- adicionales.

Importante

Este modo solo es compatible con Microsoft.Testing.Platform versión 1.7.0 y posteriores.

Importante

Si el proyecto de prueba admite VSTest pero no admite MTP, se generará un error.

Sugerencia

Puede personalizar los argumentos de la línea de comandos de la aplicación de prueba a través TestingPlatformCommandLineArguments de la propiedad MSBuild:

<PropertyGroup>
  ...
  <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>