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.
VSTest.Console.exe es la herramienta de línea de comandos para ejecutar pruebas. Puede especificar varias opciones en cualquier orden en la línea de comandos. Estas opciones se muestran en Opciones generales de línea de comandos.
Nota
El adaptador de MSTest en Visual Studio también funciona en modo heredado (equivalente a ejecutar pruebas con mstest.exe) por motivos de compatibilidad. En el modo heredado, no puede aprovechar la característica TestCaseFilter. El adaptador puede cambiar al modo heredado cuando se especifica un archivo testsettings, forcelegacymode se establece en true en un archivo de runsettings o mediante atributos como HostType.
Para ejecutar pruebas automatizadas en una máquina basada en arquitectura de ARM, debe usar VSTest.Console.exe.
Abra símbolo del sistema para desarrolladores para usar la herramienta de línea de comandos o puede encontrar la herramienta en %Program Files(x86)%\Microsoft Visual Studio\<versión>\<edition>\common7\ide\CommonExtensions\<Platform | Microsoft>.
Opciones generales de línea de comandos
En la tabla siguiente se enumeran las opciones más usadas para VSTest.Console.exe y descripciones breves de ellas. Puede ver un resumen similar escribiendo VSTest.Console/? en una línea de comandos. Para obtener la referencia completa, incluidos los modificadores internos y heredados que no aparecen aquí, consulte vstest.console.exe opciones de línea de comandos y modificadores omitidos específicamente en el repositorio de vstest.
| Opción | Descripción |
|---|---|
| [nombres de archivo de prueba] | Ejecute pruebas a partir de los archivos especificados. Separe varios nombres de archivo de prueba con espacios. Ejemplos: mytestproject.dll, mytestproject.dll myothertestproject.exe |
| /Settings:[nombre de archivo] | Ejecute pruebas con configuraciones adicionales, como recopiladores de datos. Para obtener más información, consulte Configuración de pruebas unitarias mediante un archivo .runsettings Ejemplo: /Settings:local.runsettings |
| /Tests:[nombre de prueba] | Ejecute pruebas con nombres que contengan los valores proporcionados. Este comando coincide con el nombre de prueba completo, incluido el espacio de nombres . Para proporcionar varios valores, separe por comas. Ejemplo: /Tests:TestMethod1,testMethod2La opción de línea de comandos /Tests no se puede usar con la opción de línea de comandos /TestCaseFilter . |
| /Parallel | Especifica que las pruebas se ejecutarán en paralelo. De forma predeterminada, se pueden usar hasta todos los núcleos disponibles en la máquina. Puede configurar el número de núcleos que se usarán en un archivo de configuración. |
| /InIsolation | Ejecuta las pruebas en un proceso aislado. Este aislamiento hace que el proceso de vstest.console.exe sea menos probable que se detenga en un error en las pruebas, pero es posible que las pruebas se ejecuten más lentamente. |
| /TestAdapterPath:[ruta de acceso] | Obliga al proceso de vstest.console.exe a usar adaptadores de prueba personalizados desde una ruta de acceso especificada (si existe) en la ejecución de pruebas. Ejemplo: /TestAdapterPath:[pathToCustomAdapters] |
| /Platform:[tipo de plataforma] | Fuerza el uso de la arquitectura de plataforma dada, en lugar de la plataforma determinada a partir del tiempo de ejecución actual. Los valores no distinguen mayúsculas de minúsculas; los valores aceptados son x86, x64, ARM, ARM64S390x, , Ppc64le, , RiscV64y LoongArch64.En Windows, solo x86 y x64 se pueden forzar de forma confiable; especificando ARM los resultados en x64 en la mayoría de los sistemas. No especifique esta opción para ejecutarse en un entorno de ejecución que no esté en la lista de valores válidos. |
| /Framework: [versión del marco] | Versión de .NET de destino que se usará para la ejecución de pruebas. Los formularios cortos de marco moderno se aceptan y analizan mediante el analizador del marco nuGet, por ejemplo net48, , net6.0o net10.0 (así como los formularios largos, como .NETFramework,Version=v4.8 y .NETCoreApp,Version=v10.0).También se aceptan los alias heredados Framework35, Framework40, Framework45, FrameworkCore10y FrameworkUap10 .TargetFrameworkAttribute se usa para detectar automáticamente esta opción del ensamblado y el valor predeterminado es Framework40 cuando el atributo no está presente. Debe especificar esta opción explícitamente si quita el TargetFrameworkAttribute de los ensamblados de .NET Core.Si el marco de destino se especifica como Framework35, las pruebas se ejecutan en el "modo de compatibilidad" de CLR 4.0. Ejemplo: /Framework:net8.0 |
| /TestCaseFilter:[expresión] | Ejecute pruebas que coincidan con la expresión especificada. <Expresión> es del formato <propiedad>=<valor>[|<Expresión>]. Ejemplo: /TestCaseFilter:"Priority=1"Ejemplo: /TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName"La opción de línea de comandos /TestCaseFilter no se puede usar con la opción de línea de comandos /Tests . Para obtener información sobre cómo crear y usar expresiones, vea filtro TestCase. Al escribir un filtro directamente en un shell, consulte Expresiones de filtro de escape en el shell. |
| /Environment:[NAME]=[VALUE] | Establece el valor de una variable de entorno para el proceso de host de prueba. Crea la variable si no existe e invalida si lo hace. Esta opción implica /InIsolation y obliga a que las pruebas se ejecuten en un proceso aislado. Especifique la opción varias veces para establecer varias variables. Formato corto: /e. Ejemplo: /e:VARIABLE1=VALUE1 |
| /? | Muestra información de uso. |
| /Logger:[uri/friendlyname] | Especifique un registrador para los resultados de la prueba. Especifique el parámetro varias veces para habilitar varios registradores. Ejemplo: Para registrar los resultados en un archivo de resultados de pruebas de Visual Studio (TRX), use /Logger:trx [; LogFileName=<El valor predeterminado es el nombre de archivo único>] Use LogFilePrefix=<prefix> en lugar de para mantener un archivo separado con marcas de LogFileName tiempo por ejecución.
LogFileName establece un nombre explícito y sobrescribe el archivo anterior, mientras LogFilePrefix que no lo hace.Para obtener más información, vea Ejemplo de registro. |
| /ListTests:[nombre de archivo] | Enumera las pruebas detectadas del contenedor de pruebas especificado. Formato corto: /lt. Nota: La opción /TestCaseFilter no tiene ningún efecto al enumerar las pruebas; solo controla qué pruebas se ejecutan. |
| /Blame | Ejecuta las pruebas en modo de culpa. Esta opción es útil para aislar las pruebas problemáticas que hacen que el host de prueba se bloquee. Cuando se detecta un bloqueo, crea un archivo de secuencia en TestResults/<Guid>/<Guid>_Sequence.xml que captura el orden de las pruebas que se ejecutaron antes del bloqueo.También puede recopilar un volcado de memoria o bloqueo, por ejemplo /Blame:CollectDump;DumpType=full o /Blame:CollectHangDump;TestTimeout=90m;HangDumpType=mini. Los modificadores equivalentes dotnet test son --blame-crash y --blame-hang.Para obtener la matriz de opciones completa y los requisitos de recopilación de volcados, consulte El recopilador de datos de culpa. |
| /Diag:[nombre de archivo] | Escribe registros de seguimiento de diagnóstico en el archivo especificado. Establezca el nivel de seguimiento con /Diag:<file name>;tracelevel=<off\|error\|warning\|info\|verbose> (el valor predeterminado es verbose). |
| /ResultsDirectory:[ruta de acceso] | Si no existe, se creará el directorio de resultados de pruebas en la ruta de acceso especificada. Ejemplo: /ResultsDirectory:<pathToResultsDirectory> |
| /ParentProcessId:[parentProcessId] | Id. de proceso del proceso primario responsable de iniciar el proceso actual. |
| /Port:[puerto] | Puerto para la conexión de socket y recepción de los mensajes de evento. |
| /Collect:[dataCollector friendlyName] | Habilita el recopilador de datos para la ejecución de pruebas. Más información. |
| @[file] | Lee opciones adicionales del archivo de respuesta especificado. Los argumentos del archivo están separados por espacios en blanco (espacios o nuevas líneas) y se admiten comillas, por lo que las opciones pueden abarcar varias líneas. Ejemplo: vstest.console.exe @options.rsp |
Propina
Las opciones y los valores no distinguen mayúsculas de minúsculas.
Ejemplos
La sintaxis para ejecutar vstest.console.exe es:
vstest.console.exe [TestFileNames] [Options]
De forma predeterminada, el comando devuelve 0 cuando sale normalmente, aunque no se detecten pruebas. Si desea devolver un valor distinto de cero si no se detecta ninguna prueba, use <TreatNoTestsAsError>true</TreatNoTestsAsError> opción runsettings.
El comando siguiente ejecuta vstest.console.exe para la biblioteca de pruebas myTestProject.dll:
vstest.console.exe myTestProject.dll
El comando siguiente ejecuta vstest.console.exe con varios archivos de prueba. Separe los nombres de archivo de prueba con espacios:
vstest.console.exe myTestFile.dll myOtherTestFile.dll
El comando siguiente ejecuta vstest.console.exe con varias opciones. Ejecuta las pruebas en el archivo myTestFile.dll en un proceso aislado y usa la configuración especificada en el archivo Local.RunSettings. Además, solo ejecuta pruebas marcadas como "Priority=1" y registra los resultados en un archivo de .trx.
vstest.console.exe myTestFile.dll /Settings:Local.RunSettings /InIsolation /TestCaseFilter:"Priority=1" /Logger:trx
El comando siguiente ejecuta vstest.console.exe con la opción /blame para la biblioteca de pruebas myTestProject.dll:
vstest.console.exe myTestFile.dll /blame
Si se ha producido un bloqueo de host de prueba, se genera el archivo sequence.xml. El archivo contiene nombres completos de las pruebas en su secuencia de ejecución hasta e incluye la prueba específica que se estaba ejecutando en el momento del bloqueo.
Si no hay ningún bloqueo del host de prueba, no se generará el archivo sequence.xml .
Ejemplo de un archivo de sequence.xml generado:
<?xml version="1.0"?>
<TestSequence>
<Test Name="TestProject.UnitTest1.TestMethodB" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
<Test Name="TestProject.UnitTest1.TestMethodA" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
</TestSequence>
En este caso, la <Test Name> lista es la última prueba que se estaba ejecutando en el momento del bloqueo.
Códigos de salida
vstest.console.exe devuelve uno de los dos códigos de salida:
| Código | Meaning |
|---|---|
0 |
Éxito. La operación solicitada se completó y, para una ejecución de prueba, se superaron todas las pruebas ejecutadas. |
1 |
Fracaso. Por ejemplo, se produjo un error en una o varias pruebas, se notificó un error de ejecución, la línea de comandos no era válida o faltaba, no se pudo cargar un origen de prueba o la ejecución se anuló o canceló. |
El proceso nunca devuelve ningún otro valor. Al ejecutar pruebas a través dotnet testde , el SDK de .NET muestra un código de salida distinto de cero cuando se produce un error en la ejecución de la misma manera.
Cuando la detección no encuentra pruebas coincidentes, el ejecutor imprime una advertencia en lugar de un error y, de forma predeterminada, devuelve 0. Para realizar una ejecución que detecte o seleccione cero pruebas devueltas 1 en su lugar, establezca <TreatNoTestsAsError>true</TreatNoTestsAsError> en el elemento RunConfiguration del archivo .runsettings . Para obtener más información, consulte Configuración de pruebas unitarias mediante un archivo .runsettings.
Expresiones de filtro de escape en el shell
Tanto el shell como la plataforma de prueba analizan una expresión /TestCaseFilter , por lo que algunos caracteres necesitan escape específico del shell antes de quevstest.console.exe los reciba. Al citar toda la expresión, como en los ejemplos anteriores de este artículo, se evita la mayoría de los problemas. Los siguientes casos necesitan atención adicional:
PowerShell: la coma (
,) es el operador de matriz y el punto y coma (;) es un separador de instrucciones. Cita la expresión de filtro completa para que se pase literalmente, por ejemplo/TestCaseFilter:"FullyQualifiedName=MyNamespace.MyClass.MyMethod".Bash y zsh (Linux y macOS): escape
!con una barra diagonal inversa cuando se usa el!~operador (no contiene), por ejemplo--filter FullyQualifiedName\!~IntegrationTestscondotnet test. También los valores de comillas que contienen caracteres con significado especial para el shell, como<,>o,en una lista de argumentos de tipo genérico:dotnet test --filter "FullyQualifiedName=MyNamespace.MyClass<Type1,Type2>.MyMethod"
Para obtener la referencia de filtrado completa y las propiedades admitidas por marco de prueba, consulte Filtro TestCase.
Ejemplo de registro
Cada registrador define sus propios parámetros. A diferencia de trx, el registrador de consola permite establecer el nivel de detalle. Para obtener más información, escriba VSTest.Console/? en la línea de comandos.
Este es un ejemplo para el registrador de consola:
vstest.console.exe myTestFile.dll /logger:console;verbosity=detailed
Los niveles de detalle admitidos incluyen quiet, minimal, normal y detailed.
En PowerShell, debe usar comillas:
vstest.console.exe myTestFile.dll /logger:"console;verbosity=detailed"
Para obtener la lista completa de registradores disponibles, así como instrucciones para crear su propio registrador, consulte Informes de resultados de pruebas en el repositorio vstest.
Ejemplo de UWP
Para UWP, se debe hacer referencia al archivo appxrecipe en lugar de a un archivo DLL.
vstest.console.exe /Logger:trx /Platform:x64 /framework:frameworkuap10 UnitTestsUWP\bin\x64\Release\UnitTestsUWP.build.appxrecipe
Variables de entorno
La plataforma de prueba reconoce varias variables de entorno. A continuación se muestran las más útiles al ejecutar pruebas desde la línea de comandos. Para obtener la lista completa, consulte Variables de entorno comprendidas por la plataforma de prueba en el repositorio de vstest.
| Variable | Descripción |
|---|---|
VSTEST_CONNECTION_TIMEOUT |
Tiempo de espera, en segundos, para establecer conexiones entre los componentes de la plataforma de prueba (vstest.console.exe, testhost y el recopilador de datos). El valor predeterminado es 90. Aumente en máquinas lentas o cuando la latencia de red provoque tiempos de espera de conexión. |
VSTEST_DIAG |
Habilita el registro de diagnóstico y especifica la ruta de acceso al archivo de registro. Equivalente a la opción /Diag . |
VSTEST_DIAG_VERBOSITY |
Establece el nivel de detalle del registro de diagnóstico cuando VSTEST_DIAG está habilitado. Los valores válidos son Verbose, Info, Warningy Error (el valor predeterminado es Verbose). |
VSTEST_HOST_DEBUG |
Establezca en cualquier valor no vacío para habilitar la depuración del proceso testhost. |
VSTEST_RUNNER_DEBUG |
Establezca en cualquier valor no vacío para habilitar la depuración del ejecutor (vstest.console.exe). |
VSTEST_DUMP_PATH |
Invalida el directorio predeterminado donde se almacenan los volcados de memoria de culpa. |
VSTEST_DUMP_FORCEPROCDUMP |
Establezca en cualquier valor no vacío para forzar el uso de ProcDump para la recopilación de volcados de memoria. |
VSTEST_DISABLE_UTF8_CONSOLE_ENCODING |
1 Establézcalo en para deshabilitar la configuración de la codificación UTF-8 en la salida de la consola. |
VSTEST_CONSOLE_PATH |
Ruta de acceso al archivo ejecutable devstest.console.exe usado por la aplicación de reenvío del SDK de dotnet test .NET. Equivalente a cuando -p:VSTestConsolePath se ejecuta dotnet test en un proyecto. |
Contenido relacionado
- Inicio rápido: Ejecución de pruebas desde la línea de comandos en el repositorio de vstest
- Configuración de pruebas unitarias mediante un archivo .runsettings
- Creación de un recopilador de datos en el repositorio de vstest
- Referencia del comando dotnet test