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.
Publique los resultados de las pruebas en Azure Pipelines.
Sintaxis
# Publish Test Results v2
# Publish test results to Azure Pipelines.
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit' # 'JUnit' | 'NUnit' | 'VSTest' | 'XUnit' | 'CTest'. Alias: testRunner. Required. Test result format. Default: JUnit.
testResultsFiles: '**/TEST-*.xml' # string. Required. Test results files. Default: **/TEST-*.xml.
#searchFolder: '$(System.DefaultWorkingDirectory)' # string. Search folder. Default: $(System.DefaultWorkingDirectory).
#mergeTestResults: false # boolean. Merge test results. Default: false.
#failTaskOnFailedTests: false # boolean. Fail if there are test failures. Default: false.
#failTaskOnFailureToPublishResults: false # boolean. Fail if there is failure in publishing test results. Default: false.
#failTaskOnMissingResultsFile: false # boolean. Fail if no result files are found. Default: false.
#testRunTitle: # string. Test run title.
# Advanced
#buildPlatform: # string. Alias: platform. Build Platform.
#buildConfiguration: # string. Alias: configuration. Build Configuration.
#publishRunAttachments: true # boolean. Upload test results files. Default: true.
# Publish Test Results v2
# Publish test results to Azure Pipelines.
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit' # 'JUnit' | 'NUnit' | 'VSTest' | 'XUnit' | 'CTest'. Alias: testRunner. Required. Test result format. Default: JUnit.
testResultsFiles: '**/TEST-*.xml' # string. Required. Test results files. Default: **/TEST-*.xml.
#searchFolder: '$(System.DefaultWorkingDirectory)' # string. Search folder. Default: $(System.DefaultWorkingDirectory).
#mergeTestResults: false # boolean. Merge test results. Default: false.
#failTaskOnFailedTests: false # boolean. Fail if there are test failures. Default: false.
#testRunTitle: # string. Test run title.
# Advanced
#buildPlatform: # string. Alias: platform. Build Platform.
#buildConfiguration: # string. Alias: configuration. Build Configuration.
#publishRunAttachments: true # boolean. Upload test results files. Default: true.
Entradas
testResultsFormat
-
Formato de los resultados de la prueba
Alias de entrada: testRunner
.
string
. Obligatorio. Valores permitidos: JUnit
, NUnit
, VSTest
, XUnit
, CTest
. Valor predeterminado: JUnit
.
Especifica el formato de los archivos de resultados que desea publicar. Se admiten los siguientes formatos: CTest, JUnit, NUnit 2, NUnit 3, Visual Studio Test (TRX) y xUnit 2.
Sugerencia
VSTest
format se refiere al formato TRX. Por lo tanto, también funciona si está produciendo TRX con Microsoft.Testing.Platform (MTP) y no es específico de VSTest. El valor es VSTest por razones históricas, antes de la introducción de MTP.
testResultsFiles
-
archivos de resultados de pruebas
string
. Obligatorio. Valor predeterminado: **/TEST-*.xml
.
Especifica uno o varios archivos de resultados de prueba.
- Puede usar un carácter comodín de una sola carpeta (
*
) y caracteres comodín recursivos (**
). Por ejemplo,**/TEST-*.xml
busca todos los archivos XML cuyos nombres comienzan porTEST-
en todos los subdirectorios. Si usa VSTest como formato de resultado de la prueba, el tipo de archivo debe cambiarse a.trx
por ejemplo,**/TEST-*.trx
- Se pueden especificar varias rutas de acceso, separadas por una nueva línea.
- Además, acepta patrones de minimatch.
Por ejemplo, !TEST[1-3].xml
excluye los archivos denominados TEST1.xml
, TEST2.xml
o TEST3.xml
.
de carpeta de búsqueda de searchFolder
-
string
. Valor predeterminado: $(System.DefaultWorkingDirectory)
.
Opcional. Especifica la carpeta en la que se van a buscar los archivos de resultados de las pruebas.
mergeTestResults
-
Resultados de las pruebas de combinación
boolean
. Valor predeterminado: false
.
Cuando el valor de este valor booleano es true
, la tarea notifica los resultados de la prueba de todos los archivos en una sola ejecución de prueba de . Si el valor es false
, la tarea crea una ejecución de prueba independiente para cada archivo de resultados de prueba. Para optimizar el rendimiento, los resultados siempre se combinarán en una sola ejecución si hay más de 100 archivos de resultados, incluso si esta opción está establecida en false
.
Nota:
Use la configuración de resultados de la prueba de combinación para combinar archivos del mismo marco de pruebas para asegurarse de que la asignación de resultados y la duración se calculan correctamente.
failTaskOnFailedTests
-
Error si hay errores de prueba
boolean
. Valor predeterminado: false
.
Opcional. Cuando el valor de este valor booleano es true
, se producirá un error en la tarea si alguna de las pruebas del archivo de resultados se marca como fallida. El valor predeterminado es false
, que simplemente publicará los resultados desde el archivo de resultados.
failTaskOnFailureToPublishResults
-
Error si se produce un error en la publicación de los resultados de las pruebas
boolean
. Valor predeterminado: false
.
Cuando true
, se produce un error en la tarea si se produce un error en la publicación de los resultados de las pruebas.
failTaskOnMissingResultsFile
-
Error si no se encuentra ningún archivo de resultados
boolean
. Valor predeterminado: false
.
Falla la tarea si no se encuentra ningún archivo de resultados.
testRunTitle
-
título de ejecución de pruebas
string
.
Opcional. Especifica un nombre para la ejecución de pruebas en la que se notificarán los resultados. Se pueden usar nombres de variable declarados en la canalización de compilación o versión.
buildPlatform
-
Construir plataforma
Alias de entrada: platform
.
string
.
Opcional. Especifica la plataforma de compilación en la que se debe notificar la ejecución de pruebas. Por ejemplo: x64
o x86
. Si ha definido una variable para la plataforma en la tarea de compilación, úsela aquí.
buildConfiguration
-
Configuración de compilación
Alias de entrada: configuration
.
string
.
Opcional. Especifica la configuración de compilación con la que se debe notificar la ejecución de pruebas. Por ejemplo: Debug
o Release
. Si definió una variable para la configuración en la tarea de compilación, úsela aquí.
publishRunAttachments
-
Cargar archivos de resultados de pruebas
boolean
. Valor predeterminado: true
.
Opcional. Cuando el valor de este valor booleano es true
, la tarea carga todos los archivos de resultados de la prueba como datos adjuntos a la ejecución de pruebas.
Opciones de control de tareas
Todas las tareas tienen opciones de control además de sus entradas de tarea. Para obtener más información, consulte Opciones de control y propiedades de tareas comunes.
Variables de salida
Ninguno.
Observaciones
- Requisitos previos
- Valores predeterminados de las tareas
- Mapeo de formatos de resultados
- Compatibilidad con archivos adjuntos
Esta tarea publica los resultados de las pruebas en Azure Pipelines o TFS cuando se ejecutan las pruebas para proporcionar una experiencia completa de análisis e informes de pruebas. Puede usar el ejecutor de pruebas de su elección que admita el formato de resultados que necesite. Los formatos de resultados admitidos incluyen CTest, JUnit (incluido PHPUnit), NUnit 2, NUnit 3, Visual Studio Test (TRX) y xUnit 2.
Otras tareas integradas, como la tarea de prueba de Visual Studio y la tarea de la CLI de Dot NetCore , publican automáticamente los resultados de las pruebas en la canalización. Tareas como Ant, Maven, Gulp, Grunt y Xcode proporcionan resultados de publicación como una opción dentro de la tarea, o crean bibliotecas como Cobertura y JaCoCo. Si usa alguna de estas tareas, no necesita una tarea Publicar resultados de pruebas independiente en la canalización.
Los resultados de las pruebas publicadas se muestran en la pestaña Pruebas del resumen de la canalización. Los resultados le ayudan a medir la calidad de la tubería, revisar la trazabilidad, solucionar errores e impulsar la propiedad de errores.
En el ejemplo siguiente se muestra que la tarea está configurada para publicar los resultados de las pruebas.
También puede usar esta tarea en una canalización de compilación para publicar los resultados de cobertura de código generados al ejecutar pruebas en Azure Pipelines o TFS para obtener informes de cobertura.
Prerrequisitos
Si usa un agente autohospedado de Windows, el equipo debe tener instalado este requisito previo:
- .NET Framework 4.6.2 o una versión posterior
Valores predeterminados de las tareas
La opción predeterminada utiliza el formato JUnit para publicar los resultados de las pruebas. Cuando se utiliza VSTest como testRunner, la opción testResultsFiles debe cambiarse a **/TEST-*.trx
.
testResultsFormat es un alias para el nombre de entrada de testRunner . Los archivos de resultados pueden ser generados por varios corredores, no solo por un corredor específico. Por ejemplo, el formato de resultados de jUnit es compatible con muchos ejecutores y no solo con jUnit.
Para publicar los resultados de las pruebas de Python mediante YAML, consulte Python en la sección Ecosistemas de estos temas, que también incluye ejemplos para otros lenguajes.
Mapeo de formatos de resultados
En esta tabla se enumeran los campos notificados en la pestaña Pruebas de un resumen de compilación o versión, y la asignación correspondiente con los atributos en los formatos de resultados de prueba admitidos.
Ámbito | Campo | Prueba de Visual Studio (TRX) |
---|---|---|
Ejecución de prueba | Título | Título de ejecución de prueba especificado en la tarea |
Fecha de inicio | /TestRun/Times.Attributes["inicio"]. Valor | |
Fecha de finalización | /TestRun/Times.Attributes["finalizar"]. Valor | |
Duración | Fecha de finalización - Fecha de inicio | |
Datos adjuntos | Consulte la sección de soporte de archivos adjuntos a continuación | |
Resultado de la prueba | Título | /TestRun/Results/UnitTestResult.Attributes["testName"]. Valor o /TestRun/Results/WebTestResult.Attributes["testName"]. Valor o /TestRun/Results/TestResultAggregation.Attributes["testName"]. Valor |
Fecha de inicio | /TestRun/Results/UnitTestResult.Attributes["startTime"]. Valor o /TestRun/Results/WebTestResult.Attributes["startTime"]. Valor o /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Valor | |
Fecha de finalización | /TestRun/Results/UnitTestResult.Attributes["startTime"]. Valor + /TestRun/Results/UnitTestResult.Attributes["duration"]. Valor o /TestRun/Results/WebTestResult.Attributes["startTime"]. Valor + /TestRun/Results/WebTestResult.Attributes["duration"]. Valor o /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Valor + /TestRun/Results/TestResultAggregation.Attributes["duration"]. Valor | |
Duración | /TestRun/Results/UnitTestResult.Attributes["duration"]. Valor o /TestRun/Results/WebTestResult.Attributes["duration"]. Valor o /TestRun/Results/TestResultAggregation.Attributes["duration"]. Valor | |
Propietario | /TestRun/TestDefinitions/UnitTest/Owners/Owner.Attributes["nombre"]. Valor | |
Resultado | /TestRun/Results/UnitTestResult.Attributes["resultado"]. Valor o /TestRun/Results/WebTestResult.Attributes["resultado"]. Valor o /TestRun/Results/TestResultAggregation.Attributes["resultado"]. Valor | |
Mensaje de error | /TestRun/Results/UnitTestResult/Output/ErrorInfo/Message.InnerText o /TestRun/Results/WebTestResultOutput/ErrorInfo/Message.InnerText o /TestRun/Results/TestResultAggregation/Output/ErrorInfo/Message.InnerText | |
Seguimiento de la pila | /TestRun/Results/UnitTestResult/Output/ErrorInfo/StackTrace.InnerText o /TestRun/Results/WebTestResultOutput/ErrorInfo/StackTrace.InnerText o /TestRun/Results/TestResultAggregation/Output/ErrorInfo/StackTrace.InnerText | |
Datos adjuntos | Consulte la sección de soporte de archivos adjuntos a continuación | |
Registro de la consola | /TestRun/Results/UnitTestResult/Output/StdOut.InnerText o /TestRun/Results/WebTestResultOutput/Output/StdOut.InnerText o /TestRun/Results/TestResultAggregation/Output/StdOut.InnerText | |
Registro de errores de la consola | /TestRun/Results/UnitTestResult/Output/StdErr.InnerText o /TestRun/Results/WebTestResultOutput/Output/StdErr.InnerText o /TestRun/Results/TestResultAggregation/Output/StdErr.InnerText | |
Nombre del agente | /TestRun/Results/UnitTestResult.Attributes["computerName"]. Valor o /TestRun/Results/WebTestResult.Attributes["computerName"]. Valor o /TestRun/Results/TestResultAggregation.Attributes["computerName"]. Valor | |
Archivo de prueba | /TestRun/TestDefinitions/UnitTest.Attributes["almacenamiento"]. Valor | |
Prioridad | /TestRun/TestDefinitions/UnitTest.Attributes["prioridad"]. Valor |
Nota:
La duración solo se utiliza cuando la fecha de inicio y lafecha de finalización no están disponibles.
El formato de nombre completo para testName es Namespace.Testclass.Methodname con un límite de caracteres de 512. Si la prueba está basada en datos y tiene parámetros, el límite de caracteres incluirá los parámetros.
Al publicar el resultado de la prueba, es posible que obtenga este error: No se pudieron publicar los resultados de la prueba: se especificó una prioridad no válida
Este error se produce si alguno de los métodos de prueba tiene una prioridad establecida por encima de 255, corrija la prioridad del método de prueba en el código y vuelva a ejecutar las pruebas. Puede revisar el archivo trx generado para ver todas las pruebas que tienen prioridad superior a 255.
Compatibilidad con archivos adjuntos
La tarea Publicar resultados de pruebas proporciona compatibilidad con datos adjuntos tanto para la ejecución de pruebas como para los resultados de pruebas para los siguientes formatos. En el caso de los proyectos públicos, se admiten 2 GB de archivos adjuntos en total.
Prueba de Visual Studio (TRX)
Ámbito | Tipo | Ruta |
---|---|---|
Ejecución de pruebas | Recopilador de datos | /TestRun/ResultSummary/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Valor |
Resultado de pruebas | /TestRun/ResultSummary/ResultFiles/ResultFile.Attributes["ruta"]. Valor | |
Cobertura de código | /TestRun/TestSettings/Execution/AgentRule/DataCollectors/DataCollector/Configuration/CodeCoverage/Regular/CodeCoverageItem.Attributes["binaryFile"]. Valor y /TestRun/TestSettings/Execution/AgentRule/DataCollectors/DataCollector/Configuration/CodeCoverage/Regular/CodeCoverageItem.Attributes["pdbFile"]. Valor | |
Resultado de la prueba | Recopiladores de datos | /TestRun/Results/UnitTestResult/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Valor o /TestRun/Results/WebTestResult/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Valor o /TestRun/Results/TestResultAggregation/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Valor |
Resultado de pruebas | /TestRun/Results/UnitTestResult/ResultFiles/ResultFile.Attributes["ruta"]. Valor o /TestRun/Results/WebTestResult/ResultFiles/ResultFile.Attributes["ruta"]. Valor o /TestRun/Results/TestResultAggregation/ResultFiles/ResultFile.Attributes["path"]. Valor |
Nota:
La opción de cargar el archivo de resultados de la prueba como archivo adjunto es una opción predeterminada en la tarea, aplicable a todos los formatos.
Ejemplos
Estibador
En el caso de las aplicaciones basadas en Docker, hay muchas maneras de compilar la aplicación y ejecutar pruebas:
- Compilar y probar en una canalización de compilación: las compilaciones y las pruebas se ejecutan en la canalización y los resultados de las pruebas se publican mediante la tarea Publicar resultados de pruebas .
- Compile y pruebe con un Dockerfile de varias etapas: las compilaciones y las pruebas se ejecutan dentro del contenedor mediante un archivo Docker de varias etapas, ya que los resultados de las pruebas no se vuelven a publicar en la canalización.
- Compile, pruebe y publique resultados con un Dockerfile: las compilaciones y las pruebas se ejecutan dentro del contenedor y los resultados se vuelven a publicar en la canalización. Consulte el ejemplo siguiente.
Compile, pruebe y publique resultados con un archivo de Docker
En este enfoque, se compila el código y se ejecutan pruebas dentro del contenedor mediante un archivo de Docker. A continuación, los resultados de las pruebas se copian en el host para publicarlos en la canalización. Para publicar los resultados de las pruebas en Azure Pipelines, puede usar la tarea Publicar resultados de pruebas . La imagen final se publicará en Docker o Azure Container Registry.
Obtención del código
Cree un
Dockerfile.build
archivo en la raíz del directorio del proyecto con lo siguiente:# Build and run tests inside the docker container FROM mcr.microsoft.com/dotnet/sdk:2.1 WORKDIR /app # copy the contents of agent working directory on host to workdir in container COPY . ./ # dotnet commands to build, test, and publish RUN dotnet restore RUN dotnet build -c Release RUN dotnet test dotnetcore-tests/dotnetcore-tests.csproj -c Release --logger "trx;LogFileName=testresults.trx" RUN dotnet publish -c Release -o out ENTRYPOINT dotnet dotnetcore-sample/out/dotnetcore-sample.dll
Este archivo contiene las instrucciones para compilar código y ejecutar pruebas. A continuación, las pruebas se copian en un archivo
testresults.trx
dentro del contenedor.Para que la imagen final sea lo más pequeña posible, conteniendo solo el tiempo de ejecución y los artefactos de implementación, reemplace el contenido de la existente
Dockerfile
por lo siguiente:# This Dockerfile creates the final image to be published to Docker or # Azure Container Registry # Create a container with the compiled asp.net core app FROM mcr.microsoft.com/dotnet/aspnet:2.1 # Create app directory WORKDIR /app # Copy only the deployment artifacts COPY /out . ENTRYPOINT ["dotnet", "dotnetcore-sample.dll"]
Definición de la canalización de compilación
Si tiene una cuenta de Docker Hub y desea insertar la imagen en el registro de Docker, reemplace el contenido del
.vsts-ci.docker.yml
archivo por lo siguiente:# Build Docker image for this app, to be published to Docker Registry pool: vmImage: 'ubuntu-latest' variables: buildConfiguration: 'Release' steps: - script: | docker build -f Dockerfile.build -t $(dockerId)/dotnetcore-build:$BUILD_BUILDID . docker run --name dotnetcoreapp --rm -d $(dockerId)/dotnetcore-build:$BUILD_BUILDID docker cp dotnetcoreapp:app/dotnetcore-tests/TestResults $(System.DefaultWorkingDirectory) docker cp dotnetcoreapp:app/dotnetcore-sample/out $(System.DefaultWorkingDirectory) docker stop dotnetcoreapp - task: PublishTestResults@2 inputs: testRunner: VSTest testResultsFiles: '**/*.trx' failTaskOnFailedTests: true - script: | docker build -f Dockerfile -t $(dockerId)/dotnetcore-sample:$BUILD_BUILDID . docker login -u $(dockerId) -p $pswd docker push $(dockerId)/dotnetcore-sample:$BUILD_BUILDID env: pswd: $(dockerPassword)
Como alternativa, si configura una instancia de Azure Container Registry y desea insertar la imagen en ese registro, reemplace el contenido del
.vsts-ci.yml
archivo por lo siguiente:# Build Docker image for this app to be published to Azure Container Registry pool: vmImage: 'ubuntu-latest' variables: buildConfiguration: 'Release' steps: - script: | docker build -f Dockerfile.build -t $(dockerId)/dotnetcore-build:$BUILD_BUILDID . docker run --name dotnetcoreapp --rm -d $(dockerId)/dotnetcore-build:$BUILD_BUILDID docker cp dotnetcoreapp:app/dotnetcore-tests/TestResults $(System.DefaultWorkingDirectory) docker cp dotnetcoreapp:app/dotnetcore-sample/out $(System.DefaultWorkingDirectory) docker stop dotnetcoreapp - task: PublishTestResults@2 inputs: testRunner: VSTest testResultsFiles: '**/*.trx' failTaskOnFailedTests: true - script: | docker build -f Dockerfile -t $(dockerId).azurecr.io/dotnetcore-sample:$BUILD_BUILDID . docker login -u $(dockerId) -p $pswd $(dockerid).azurecr.io docker push $(dockerId).azurecr.io/dotnetcore-sample:$BUILD_BUILDID env: pswd: $(dockerPassword)
Envía el cambio a la rama principal de tu repositorio.
Si usa Azure Container Registry, asegúrese de haber creado previamente el registro en Azure Portal. Copie el nombre de usuario y la contraseña de administrador que se muestran en la sección Claves de acceso de la configuración del Registro en Azure Portal.
Actualice la canalización de compilación con lo siguiente
-
Grupo de agentes:
Hosted Ubuntu 1604
- dockerId: establezca el valor en el identificador de Docker para DockerHub o en el nombre de usuario administrador de Azure Container Registry.
- dockerPassword: establezca el valor de la contraseña de DockerHub o la contraseña de administrador de Azure Container Registry.
-
Ruta del archivo YAML:
/.vsts-ci.docker.yml
-
Grupo de agentes:
Ponga en cola una nueva compilación y observe cómo crea e inserta una imagen de Docker en el registro y los resultados de las pruebas en Azure DevOps.
Requisitos
Requisito | Descripción |
---|---|
Tipos de canalización | YAML, compilación clásica, versión clásica |
Se ejecuta en | Agente, DeploymentGroup |
demandas | Ninguno |
Capacidades | Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo. |
restricciones de comandos | Cualquiera |
variables settable | Cualquiera |
Versión del agente | 2.0.0 o superior |
Categoría de tarea | Prueba |