Tarea Prueba de Visual Studio
Azure Pipelines
Use esta tarea para ejecutar pruebas unitarias y funcionales (Selenium, Appium, pruebas de IU codificadas, etc.) mediante el Visual Studio Test Runner. Además de las pruebas basadas en MSTest, también se pueden ejecutar marcos de prueba que tienen un adaptador de prueba de Visual Studio, como xUnit, NUnit o Chutzpah.
Las pruebas destinadas a .NET Core Framework se pueden ejecutar especificando el valor de la plataforma de destino adecuada en el archivo .runsettings.
Las pruebas se pueden distribuir en varios agentes mediante la versión 2 de esta tarea. Para obtener más información, vea Ejecutar pruebas en paralelo mediante la Visual Studio test.
Comprobación de los requisitos previos
Si usa un agente Windows auto hospedado, asegúrese de que la máquina tiene instalado este requisito previo:
- .NET Framework 4.6.2 o una versión posterior
Peticiones
El agente debe tener la siguiente funcionalidad:
vstest
La demanda de vstest se puede satisfacer de dos maneras:
Visual Studio se instala en el equipo del agente.
Mediante el uso de la Visual Studio instalador de la plataforma de prueba en la definición de canalización.
Fragmento de código YAML
# Visual Studio Test
# Run unit and functional tests (Selenium, Appium, Coded UI test, etc.) using the Visual Studio Test (VsTest) runner. Test frameworks that have a Visual Studio test adapter such as MsTest, xUnit, NUnit, Chutzpah (for JavaScript tests using QUnit, Mocha and Jasmine), etc. can be run. Tests can be distributed on multiple agents using this task (version 2).
- task: VSTest@2
inputs:
#testSelector: 'testAssemblies' # Options: testAssemblies, testPlan, testRun
#testAssemblyVer2: | # Required when testSelector == TestAssemblies
# **\*test*.dll
# !**\*TestAdapter.dll
# !**\obj\**
#testPlan: # Required when testSelector == TestPlan
#testSuite: # Required when testSelector == TestPlan
#testConfiguration: # Required when testSelector == TestPlan
#tcmTestRun: '$(test.RunId)' # Optional
#searchFolder: '$(System.DefaultWorkingDirectory)'
#testFiltercriteria: # Optional
#runOnlyImpactedTests: False # Optional
#runAllTestsAfterXBuilds: '50' # Optional
#uiTests: false # Optional
#vstestLocationMethod: 'version' # Optional. Options: version, location
#vsTestVersion: 'latest' # Optional. Options: latest, 16.0, 15.0, 14.0, toolsInstaller
#vstestLocation: # Optional
#runSettingsFile: # Optional
#overrideTestrunParameters: # Optional
#pathtoCustomTestAdapters: # Optional
#runInParallel: False # Optional
#runTestsInIsolation: False # Optional
#codeCoverageEnabled: False # Optional
#otherConsoleOptions: # Optional
#distributionBatchType: 'basedOnTestCases' # Optional. Options: basedOnTestCases, basedOnExecutionTime, basedOnAssembly
#batchingBasedOnAgentsOption: 'autoBatchSize' # Optional. Options: autoBatchSize, customBatchSize
#customBatchSizeValue: '10' # Required when distributionBatchType == BasedOnTestCases && BatchingBasedOnAgentsOption == CustomBatchSize
#batchingBasedOnExecutionTimeOption: 'autoBatchSize' # Optional. Options: autoBatchSize, customTimeBatchSize
#customRunTimePerBatchValue: '60' # Required when distributionBatchType == BasedOnExecutionTime && BatchingBasedOnExecutionTimeOption == CustomTimeBatchSize
#dontDistribute: False # Optional
#testRunTitle: # Optional
#platform: # Optional
#configuration: # Optional
#publishRunAttachments: true # Optional
#failOnMinTestsNotRun: false # Optional
#minimumExpectedTests: '1' # Optional
#diagnosticsEnabled: false # Optional
#collectDumpOn: 'onAbortOnly' # Optional. Options: onAbortOnly, always, never
#rerunFailedTests: False # Optional
#rerunType: 'basedOnTestFailurePercentage' # Optional. Options: basedOnTestFailurePercentage, basedOnTestFailureCount
#rerunFailedThreshold: '30' # Optional
#rerunFailedTestCasesMaxLimit: '5' # Optional
#rerunMaxAttempts: '3' # Optional
Argumentos
| Argumento | Descripción |
|---|---|
testSelector Selección de pruebas mediante |
(Obligatorio) Ensamblado de prueba: Use esta opción para especificar uno o varios ensamblados de prueba que contengan las pruebas. Opcionalmente, puede especificar un criterio de filtro para seleccionar solo pruebas específicas. Plan de prueba: Use esta opción para ejecutar pruebas desde el plan de pruebas que tengan asociado un método de prueba automatizado. Para más información sobre cómo asociar pruebas a un elemento de trabajo de casos de prueba, consulte Asociación de pruebas automatizadas con casos de prueba. Ejecución de pruebas: Use esta opción cuando esté configurando un entorno para ejecutar pruebas desde planes de prueba. Esta opción no debe usarse al ejecutar pruebas en una canalización de integración continua/implementación continua (CI/CD). Valor predeterminado: testAssemblies |
testAssemblyVer2Archivos de prueba |
(Obligatorio) Ejecute pruebas desde los archivos especificados. Las pruebas ordenadas y las pruebas web se pueden ejecutar especificando los .orderedtest archivos .webtest y respectivamente. Para ejecutar .webtest , Visual Studio 2017 Update 4 o posterior. Las rutas de acceso de archivo son relativas a la carpeta de búsqueda. Admite varias líneas de patrones de minimatch. Más información Valor predeterminado: **\\*test*.dll\n!**\\*TestAdapter.dll\n!**\\obj\\** |
testPlanPlan de pruebas |
(Obligatorio) Seleccione un plan de pruebas que contenga conjuntos de pruebas con casos de prueba automatizados. |
testSuiteConjunto de pruebas |
(Obligatorio) Seleccione uno o varios conjuntos de pruebas que contengan casos de prueba automatizados. Los elementos de trabajo del caso de prueba deben estar asociados a un método de prueba automatizado. Más información. |
testConfigurationConfiguración de prueba |
(Obligatorio) Seleccione Configuración de prueba. |
tcmTestRunSerie de pruebas |
(Opcional) La selección basada en la ejecución de pruebas se usa al desencadenar ejecuciones de prueba automatizadas desde planes de prueba. Esta opción no se puede usar para ejecutar pruebas en la canalización de CI/CD. |
searchFolderCarpeta de Búsqueda |
(Obligatorio) Carpeta para buscar los ensamblados de prueba. |
testFiltercriteriaCriterios de filtro de prueba |
(Opcional) Criterios adicionales para filtrar pruebas de ensamblados de prueba. Por ejemplo: Priority=1|Name=MyTestMethod. Más información |
runOnlyImpactedTestsEjecutar solo pruebas afectadas |
(Opcional) Seleccione y ejecute automáticamente solo las pruebas necesarias para validar el cambio de código. Más información |
runAllTestsAfterXBuildsNúmero de compilaciones después de las cuales se deben ejecutar todas las pruebas |
(Opcional) Número de compilaciones después de las cuales se ejecutarán automáticamente todas las pruebas. Análisis de impacto de prueba almacena la asignación entre los casos de prueba y el código fuente. Se recomienda volver a generar la asignación mediante la ejecución de todas las pruebas de forma periódica. |
uiTestsLa combinación de pruebas contiene pruebas de IU |
(Opcional) Para ejecutar pruebas de interfaz de usuario, asegúrese de que el agente está establecido para ejecutarse en modo interactivo con el inicio de sesión automático habilitado. La configuración de un agente para que se ejecute de forma interactiva debe realizarse antes de poner en cola la compilación o versión. Al marcar esta casilla no se configura automáticamente el agente en modo interactivo. Esta opción de la tarea es servir solo como recordatorio para configurar el agente correctamente para evitar errores. Los agentes Windows hospedados de los grupos de VS 2015 y 2017 se pueden usar para ejecutar pruebas de interfaz de usuario. |
vstestLocationMethodSelección de la plataforma de prueba mediante |
(Opcional) Especifique qué plataforma de prueba se debe usar. |
vsTestVersionVersión de la plataforma de pruebas |
(Opcional) La versión de Visual Studio prueba que se usará. Si se especifica latest, elige Visual Studio 2017 o Visual Studio 2015 en función de lo que esté instalado. Visual Studio 2013 no se admite. Para ejecutar pruebas sin necesidad de Visual Studio en el agente, use la opción en la interfaz de usuario o Installed by tools installer toolsInstaller en YAML. Asegúrese de incluir la tarea "Visual Studio del instalador de la plataforma de prueba" para adquirir la plataforma de prueba de NuGet. |
vstestLocationRuta de acceso a vstest.console.exe |
(Opcional) Especifique la ruta de acceso a VSTest. |
runSettingsFileArchivo de configuración |
(Opcional) Ruta de runsettings acceso al archivo o que se usará con las testsettings pruebas. A partir Visual Studio 15.7, se recomienda usar runsettings para todos los tipos de pruebas. Para obtener más información sobre cómo convertir un archivo .testsettings en un archivo .runsettings, vea este tema. |
overrideTestrunParametersInvalidar parámetros de ejecución de prueba |
(Opcional) Invalide los parámetros definidos en la sección TestRunParameters del archivo runsettings o la sección Propiedades del archivo testsettings. Por ejemplo: -key1 value1 -key2 value2. Nota: Se puede acceder a las propiedades especificadas en el archivo mediante TestContext Visual Studio 2017 Update 4 o posterior |
pathtoCustomTestAdaptersRuta de acceso a adaptadores de prueba personalizados |
(Opcional) Ruta de acceso del directorio a adaptadores de prueba personalizados. Los adaptadores que residen en la misma carpeta que los ensamblados de prueba se detectan automáticamente. |
runInParallelEjecución de pruebas en paralelo en máquinas de varios núcleos |
(Opcional) Si se establece, las pruebas se ejecutarán en paralelo aprovechando los núcleos disponibles de la máquina. Esto invalidará MaxCpuCount si se especifica en el archivo runsettings. Haga clic aquí para obtener más información sobre cómo se ejecutan las pruebas en paralelo. |
runTestsInIsolationEjecución de pruebas de forma aislada |
(Opcional) Ejecuta las pruebas en un proceso aislado. Esto hace que el proceso sea menos probable que se detenga en caso de error en las pruebas, pero es posible que vstest.console.exe las pruebas se ejecuten más lentamente. Actualmente, esta opción no se puede usar cuando se ejecuta con la configuración de trabajo de varios agentes. |
codeCoverageEnabledCobertura de código habilitada |
(Opcional) Recopile información de cobertura de código de la ejecución de pruebas. |
otherConsoleOptionsOtras opciones de consola |
(Opcional) Otras opciones de consola que se pueden pasar vstest.console.exe a , como se vstest.console.exe Estas opciones no se admiten y se omitirán al ejecutar pruebas mediante la configuración en paralelo Multi agent de un trabajo del agente o al ejecutar pruebas mediante la opción Plan de prueba. Las opciones se pueden especificar mediante un archivo de configuración en su lugar. |
distributionBatchType Pruebas por lotes |
(Opcional) Un lote es un grupo de pruebas. Un lote de pruebas ejecuta sus pruebas al mismo tiempo y los resultados se publican para el lote. Si el trabajo en el que se ejecuta la tarea está establecido para usar varios agentes, cada agente recoge los lotes de pruebas disponibles para ejecutarse en paralelo. En función del número de pruebas y agentes: Procesamiento por lotes sencillo en función del número de pruebas y agentes que participan en la ejecución de pruebas. En función del tiempo de ejecución pasado de las pruebas: Este procesamiento por lotes tiene en cuenta el tiempo de ejecución pasado para crear lotes de pruebas de modo que cada lote tenga aproximadamente el mismo tiempo de ejecución. En función de los ensamblados de prueba: Las pruebas de un ensamblado se realizan por lotes juntos". Valor predeterminado: basedOnTestCases |
batchingBasedOnAgentsOption Opciones de Batch |
(Opcional) Procesamiento por lotes sencillo en función del número de pruebas y agentes que participan en la ejecución de pruebas. Cuando se determina automáticamente el tamaño del lote, cada lote contiene (total number of tests / number of agents) pruebas. Si se especifica un tamaño de lote, cada lote contendrá el número especificado de pruebas. Valor predeterminado: autoBatchSize |
customBatchSizeValue Número de pruebas por lote |
(Obligatorio) Especificación del tamaño del lote Valor predeterminado: 10 |
batchingBasedOnExecutionTimeOption Opciones de Batch |
(Opcional) Este procesamiento por lotes tiene en cuenta el tiempo de ejecución pasado para crear lotes de pruebas de modo que cada lote tenga aproximadamente el mismo tiempo de ejecución. Las pruebas de ejecución rápida se procesarán por lotes juntos, mientras que las pruebas de ejecución más larga pueden pertenecer a un lote independiente. Cuando esta opción se usa con la configuración de trabajo de varios agentes, el tiempo total de prueba se reduce al mínimo. Valor predeterminado: autoBatchSize |
customRunTimePerBatchValue Tiempo de ejecución (s) por lote |
(Obligatorio) Especificar el tiempo de ejecución (s) por lote Valor predeterminado: 60 |
dontDistribute Replicación de pruebas en lugar de distribuir cuando se usan varios agentes en el trabajo |
(Opcional) Al elegir esta opción, no se distribuirán las pruebas entre agentes cuando la tarea se ejecuta en un trabajo de varios agentes. Cada una de las pruebas seleccionadas se repetirá en cada agente. La opción no es aplicable cuando el trabajo del agente está configurado para ejecutarse sin paralelismo o con la opción de configuración múltiple. Valor predeterminado: False |
testRunTitle Título de la ejecución de prueba |
(Opcional) Proporcione un nombre para la ejecución de pruebas. |
platformPlataforma de compilación |
(Opcional) Cree una plataforma en la que se deba informar de las pruebas. Si ha definido una variable para la plataforma en la tarea de compilación, úsela aquí. |
configurationConfiguración de compilación |
(Opcional) Configuración de compilación en la que se deben informar las pruebas. Si ha definido una variable para la configuración en la tarea de compilación, úsela aquí. |
publishRunAttachmentsUpload datos adjuntos de prueba |
(Opcional) Participar o no en la publicación de datos adjuntos de nivel de ejecución. Valor predeterminado: true |
failOnMinTestsNotRunError en la tarea si no se ejecuta un número mínimo de pruebas |
(Opcional) Use esta opción para producir un error en la tarea si no se ejecuta un número mínimo de pruebas. Esto puede ser útil si cualquier cambio en las entradas de tareas o en las dependencias subyacentes del adaptador de pruebas conduce a que solo se pueda encontrar un subconjunto de las pruebas deseadas. Valor predeterminado: False |
minimumExpectedTestsNúmero mínimo de pruebas |
(Opcional) Especifique el número mínimo de pruebas que se deben ejecutar para que la tarea se ejecute correctamente. La ejecución total de pruebas se calcula como la suma de las pruebas superadas, con errores y anuladas. Valor predeterminado: 1 |
diagnosticsEnabledRecopilación de diagnósticos avanzados en caso de errores catastróficos |
(Opcional) Use esta opción para activar la recopilación de datos de diagnóstico para solucionar errores catastróficos, como el bloqueo de pruebas. Cuando se activa esta opción, se genera un archivo XML de secuencia y se adjunta a la ejecución de pruebas. El archivo de secuencia contiene información sobre la secuencia en la que se han ejecutado las pruebas, de modo que se pueda identificar una prueba potencialmente responsable. Valor predeterminado: false |
collectDumpOnRecopilación del volcado de proceso y asociación al informe de ejecución de pruebas |
(Opcional) Use esta opción para recopilar un minivolcar que se puede usar para un análisis posterior. Solo en caso de anulación:el minivolcar solo se recopilará cuando se anule la ejecución de pruebas. Siempre:el minivolcar siempre se recopilará independientemente de si la ejecución de prueba se completa o no. Nunca:el minivolcar no se recopilará independientemente de si la ejecución de prueba se completa o no. |
rerunFailedTestsVolver a ejecutar pruebas con errores |
(Opcional) Al seleccionar esta opción, se volverán a ejecutar las pruebas con errores hasta que se pasen o se alcance el número máximo de intentos. Valor predeterminado: False |
rerunTypeNo volver a ejecutar si los errores de prueba superan el umbral especificado |
(Opcional) Use esta opción para evitar volver a ejecutar las pruebas cuando la tasa de errores cruza el umbral especificado. Esto es aplicable si algún problema de entorno conduce a errores masivos. Puede especificar % de errores con o número de pruebas con errores como basedOnTestFailurePercentage umbral con basedOnTestFailureCount.Valor predeterminado: basedOnTestFailurePercentage |
rerunFailedThreshold% de error |
(Opcional) Use esta opción para evitar volver a ejecutar las pruebas cuando la tasa de errores cruza el umbral especificado. Esto es aplicable si algún problema de entorno conduce a errores masivos Valor predeterminado: 30 |
rerunFailedTestCasesMaxLimitNúmero de pruebas con errores |
(Opcional) Use esta opción para evitar volver a ejecutar las pruebas cuando el número de casos de prueba con error cruza el límite especificado. Esto es aplicable si algún problema de entorno conduce a errores masivos y si rerunType es rerunFailedTestCasesMaxLimit. Valor predeterminado: 5 |
rerunMaxAttemptsNúmero máximo de intentos |
(Opcional) Especifique el número máximo de veces que se debe volver a probar una prueba con errores. Si se supera una prueba antes de que se alcance el número máximo de intentos, no se volverá a ejecutar más. Valor predeterminado: 3 |
Código Abierto
Esta tarea es de código abierto en GitHub. Los comentarios y las contribuciones son bienvenidos.
Preguntas más frecuentes
¿Cómo puedo ejecutar pruebas que usan TestCase como origen de datos?
Para ejecutar pruebas automatizadas que usan TestCase como origen de datos, se necesita lo siguiente:
Debe tener Visual Studio 2017.6 o posterior en el equipo del agente. Visual Studio La tarea Instalador de plataforma de prueba no se puede usar para ejecutar pruebas que usan TestCase como origen de datos.
Cree un PAT que esté autorizado para el ámbito "Elementos de trabajo (completos)".
Agregue una variable de compilación o versión segura denominada Test.TestCaseAccessToken con el valor establecido en el PAT creado en el paso anterior.
Tengo problemas al ejecutar pruebas xUnit y NUnit controladas por datos con algunas de las opciones de tarea. ¿Existen limitaciones conocidas?
Las pruebas controladas por datos que usan marcos de pruebas xUnit y NUnit tienen algunas limitaciones conocidas y no se pueden usar con las siguientes opciones de tarea:
Vuelva a ejecutar las pruebas con errores.
Distribución de pruebas en varios agentes y opciones de procesamiento por lotes.
Análisis de impacto de las pruebas
Las limitaciones anteriores se debe a la forma en que los adaptadores de estos marcos de prueba detectan y informan de pruebas controladas por datos.