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 testy 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. En MTP 1.9, se genera una advertencia con código MTP0001 cuando se detecta un argumento que se omite silenciosamente.
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.
Importante
La ejecución de proyectos mtP en modo VSTest se considera heredada en favor de la experiencia más reciente en el SDK de .NET 10. La compatibilidad para ejecutar bajo este modo será eliminada en Microsoft.Testing.Platform versión 2, si se usa con el SDK de .NET 10. La compatibilidad sigue estando disponible para el SDK de .NET 9 y versiones anteriores para la compatibilidad con versiones anteriores.
Para obtener más información, vea Migrar al modo MTP de dotnet test.
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 testmodo VSTest , debe usarMicrosoft.Testing.Platform.MSBuild, pasar las opciones de línea de comandos específicas de MTP después del--adicional y establecerTestingPlatformDotnetTestSupportentrue. - 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 la siguiente configuración al global.json archivo:
{
"test": {
"runner": "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>
Migra al modo MTP de dotnet test
Para los usuarios de MTP que usan el modo VSTest de dotnet test, hay algunas acciones necesarias para migrar a la experiencia más reciente dotnet test :
- Agregue la sección
testa su archivoglobal.json, como se muestra arriba. - Quite la
TestingPlatformDotnetTestSupportpropiedad de MSBuild, ya que ya no es necesaria. - Quita
TestingPlatformCaptureOutputyTestingPlatformShowTestsFailurelas propiedades de MSBuild, ya que el nuevodotnet testya no las utiliza. - Quite el extra
--, por ejemplodotnet test -- --report-trx, debe convertirse endotnet test --report-trx. - Si pasa una solución específica (o directorio que contiene la solución), por ejemplo,
dotnet test MySolution.sln, debe convertirse endotnet test --solution MySolution.sln. - Si pasa un proyecto específico (o directorio que contiene el proyecto), por ejemplo,
dotnet test MyProject.csproj, debe convertirse endotnet test --project MyProject.csproj. - Si pasa un archivo DLL específico, por ejemplo,
dotnet test path/to/UnitTests.dll, debe convertirse endotnet test --test-modules path/to/UnitTests.dll. Tenga en cuenta que--test-modulestambién admite el globbing.