Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 usarMicrosoft.Testing.Platform.MSBuild
, pasar las opciones de línea de comandos específicas de MTP después del--
adicional y establecerTestingPlatformDotnetTestSupport
entrue
. - 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>