Delen via


PublishTestResults@2 - Testresultaten v2-taak publiceren

Testresultaten publiceren naar Azure Pipelines.

Testresultaten publiceren naar Azure Pipelines/TFS.

Syntax

# 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.
# Publish Test Results v2
# Publish Test Results to Azure Pipelines/TFS.
- task: PublishTestResults@2
  inputs:
    testResultsFormat: 'JUnit' # 'JUnit' | 'NUnit' | 'VSTest' | 'XUnit'. 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.
    #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.

Invoerwaarden

testResultsFormat - Indeling van testresultaat
Invoeralias: testRunner. string. Vereist. Toegestane waarden: JUnit, NUnit, VSTest, XUnit, . CTest Standaardwaarde: JUnit.

Hiermee geeft u de indeling op van de resultatenbestanden die u wilt publiceren. De volgende indelingen worden ondersteund: CTest, JUnit, NUnit 2, NUnit 3, Visual Studio Test (TRX) en xUnit 2.


testResultsFormat - Indeling van testresultaat
Invoeralias: testRunner. string. Vereist. Toegestane waarden: JUnit, NUnit, VSTest, XUnit. Standaardwaarde: JUnit.

Hiermee geeft u de indeling op van de resultatenbestanden die u wilt publiceren. De volgende indelingen worden ondersteund: CTest, JUnit, NUnit 2, NUnit 3, Visual Studio Test (TRX) en xUnit 2.


testResultsFiles - Bestanden met testresultaten
string. Vereist. Standaardwaarde: **/TEST-*.xml.

Hiermee geeft u een of meer bestanden met testresultaten op.

  • U kunt een jokerteken met één map (*) en recursieve jokertekens () gebruiken.** Zoekt bijvoorbeeld **/TEST-*.xml naar alle XML-bestanden waarvan de naam begint met TEST- in alle submappen. Als u VSTest gebruikt als de indeling van het testresultaat, moet het bestandstype worden gewijzigd in .trx bijvoorbeeld **/TEST-*.trx
  • Er kunnen meerdere paden worden opgegeven, gescheiden door een nieuwe regel.
  • Daarnaast worden minimatchpatronen geaccepteerd.

Sluit bijvoorbeeld !TEST[1-3].xml bestanden met de naam TEST1.xml, TEST2.xmlof TEST3.xmluit.


searchFolder - Search map
string. Standaardwaarde: $(System.DefaultWorkingDirectory).

Optioneel. Hiermee geeft u de map te zoeken naar de bestanden met testresultaten.


mergeTestResults - Testresultaten samenvoegen
boolean. Standaardwaarde: false.

Wanneer de waarde van deze booleaanse waarde is, rapporteert truede taak testresultaten van alle bestanden op basis van één testuitvoering. Als de waarde is false, maakt de taak een afzonderlijke testuitvoering voor elk testresultaatbestand.

Notitie

Gebruik de instelling testresultaten samenvoegen om bestanden uit hetzelfde testframework te combineren om ervoor te zorgen dat de toewijzing van resultaten en de duur correct worden berekend.


failTaskOnFailedTests - Mislukt als er testfouten zijn
boolean. Standaardwaarde: false.

Optioneel. Wanneer de waarde van deze booleaanse waarde is true, mislukt de taak als een van de tests in het resultatenbestand is gemarkeerd als mislukt. De standaardwaarde is false, waarmee de resultaten uit het resultatenbestand worden gepubliceerd.


failTaskOnFailureToPublishResults - Mislukt als er een fout optreedt bij het publiceren van testresultaten
boolean. Standaardwaarde: false.

Wanneer truemislukt de taak als er een fout optreedt bij het publiceren van testresultaten.


failTaskOnMissingResultsFile - Mislukt als er geen resultatenbestanden worden gevonden
boolean. Standaardwaarde: false.

Mislukt de taak als er geen resultaatbestanden worden gevonden.


testRunTitle - Titel van testuitvoering
string.

Optioneel. Hiermee geeft u een naam op voor de testuitvoering waarvoor de resultaten worden gerapporteerd. Variabelenamen die zijn gedeclareerd in de build- of release-pijplijn, kunnen worden gebruikt.


buildPlatform - Platform bouwen
Invoeralias: platform. string.

Optioneel. Hiermee geeft u het buildplatform op waarop de testuitvoering moet worden gerapporteerd. Bijvoorbeeld: x64 of x86. Als u in uw buildtaak een variabele voor het platform hebt gedefinieerd, gebruikt u deze hier.


buildConfiguration - Buildconfiguratie
Invoeralias: configuration. string.

Optioneel. Hiermee geeft u de buildconfiguratie op waarop de testuitvoering moet worden gerapporteerd. Bijvoorbeeld: Debug of Release. Als u een variabele hebt gedefinieerd voor de configuratie in uw buildtaak, gebruikt u deze hier.


publishRunAttachments - Bestanden met testresultaten uploaden
boolean. Standaardwaarde: true.

Optioneel. Wanneer de waarde van deze booleaanse waarde is true, uploadt de taak alle bestanden met testresultaten als bijlagen bij de testuitvoering.


Opties voor taakbeheer

Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties voor besturingselementen en algemene taakeigenschappen voor meer informatie.

Uitvoervariabelen

Geen.

Opmerkingen

Met deze taak worden testresultaten gepubliceerd naar Azure Pipelines of TFS wanneer tests worden uitgevoerd om een uitgebreide ervaring voor testrapportage en analyse te bieden. U kunt de testrunner van uw keuze gebruiken die ondersteuning biedt voor de gewenste indeling voor resultaten. Ondersteunde resultatenindelingen zijn CTest, JUnit (inclusief PHPUnit), NUnit 2, NUnit 3, Visual Studio Test (TRX) en xUnit 2.

Andere ingebouwde taken, zoals Visual Studio Test-taak en Dot NetCore CLI-taak , publiceren automatisch testresultaten naar de pijplijn. Taken zoals Ant, Maven, Gulp, Grunt en Xcode bieden publicatieresultaten als een optie binnen de taak of buildbibliotheken zoals Cobertura en JaCoCo. Als u een van deze taken gebruikt, hebt u geen afzonderlijke taak Testresultaten publiceren in de pijplijn nodig.

De gepubliceerde testresultaten worden weergegeven op het tabblad Tests in het pijplijnoverzicht. De resultaten helpen u bij het meten van de pijplijnkwaliteit, het controleren van de traceerbaarheid, het oplossen van fouten en het eigendom van schijffouten.

In het volgende voorbeeld ziet u dat de taak is geconfigureerd om testresultaten te publiceren.

De pagina testgeschiedenis openen

U kunt deze taak ook gebruiken in een build-pijplijn om codedekkingsresultaten te publiceren die worden geproduceerd bij het uitvoeren van tests naar Azure Pipelines of TFS om dekkingsrapportage te verkrijgen.

Vereisten

Als u een zelf-hostende Windows-agent gebruikt, moet deze vereiste op uw computer zijn geïnstalleerd:

Standaardwaarden voor taken

De standaardoptie gebruikt de JUnit-indeling om testresultaten te publiceren. Wanneer u VSTest als testRunner gebruikt, moet de optie testResultsFiles worden gewijzigd in **/TEST-*.trx.

testResultsFormat is een alias voor de invoernaam testRunner . De resultatenbestanden kunnen worden geproduceerd door meerdere runners, niet alleen door een specifieke runner. De jUnit-resultatenindeling wordt bijvoorbeeld ondersteund door veel runners en niet alleen door jUnit.

Als u testresultaten voor Python wilt publiceren met behulp van YAML, raadpleegt u Python in de sectie Ecosystemen van deze onderwerpen, die ook voorbeelden voor andere talen bevat.

Toewijzing van resultaatindelingen

Deze tabel bevat de velden die zijn gerapporteerd op het tabblad Tests in een build- of releaseoverzicht en de bijbehorende toewijzing met de kenmerken in de ondersteunde indelingen voor testresultaten.

Bereik Veld Visual Studio Test (TRX)
Testuitvoering Titel Titel van testuitvoering die is opgegeven in de taak
Begindatum /TestRun/Times.Attributes["start"]. Waarde
Datum voltooid /TestRun/Times.Attributes["finish"]. Waarde
Duur Datum voltooid - Begindatum
Bijlagen Raadpleeg de sectie Ondersteuning voor bijlagen hieronder
Testresultaat Titel /TestRun/Results/UnitTestResult.Attributes["testName"]. Value Or /TestRun/Results/WebTestResult.Attributes["testName"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["testName"]. Waarde
Begindatum /TestRun/Results/UnitTestResult.Attributes["startTime"]. Value Or /TestRun/Results/WebTestResult.Attributes["startTime"]. Value Of /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Waarde
Datum voltooid /TestRun/Results/UnitTestResult.Attributes["startTime"]. Value + /TestRun/Results/UnitTestResult.Attributes["duration"]. Value Or /TestRun/Results/WebTestResult.Attributes["startTime"]. Value + /TestRun/Results/WebTestResult.Attributes["duration"]. Value Of /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Waarde + /TestRun/Results/TestResultAggregation.Attributes["duration"]. Waarde
Duur /TestRun/Results/UnitTestResult.Attributes["duration"]. Value Or /TestRun/Results/WebTestResult.Attributes["duration"]. Value Of /TestRun/Results/TestResultAggregation.Attributes["duration"]. Waarde
Eigenaar /TestRun/TestDefinitions/UnitTest/Owners/Owner.Attributes["name"]. Waarde
Resultaat /TestRun/Results/UnitTestResult.Attributes["outcome"]. Value Or /TestRun/Results/WebTestResult.Attributes["outcome"]. Value Of /TestRun/Results/TestResultAggregation.Attributes["outcome"]. Waarde
Foutbericht /TestRun/Results/UnitTestResult/Output/ErrorInfo/Message.innerText of /TestRun/Results/WebTestResultOutput/ErrorInfo/Message.InnerText of /TestRun/Results/TestResultAggregation/Output/ErrorInfo/Message.InnerText
Stack-tracering /TestRun/Results/UnitTestResult/Output/ErrorInfo/StackTrace.innerText Of /TestRun/Results/WebTestResultOutput/ErrorInfo/StackTrace.InnerText Of /TestRun/Results/TestResultAggregation/Output/ErrorInfo/StackTrace.InnerText
Bijlagen Raadpleeg de sectie Ondersteuning voor bijlagen hieronder
Consolelogboek /TestRun/Results/UnitTestResult/Output/StdOut.InnerText Of /TestRun/Results/WebTestResultOutput/Output/StdOut.InnerText Of /TestRun/Results/TestResultAggregation/Output/StdOut.InnerText
Consolefoutenlogboek /TestRun/Results/UnitTestResult/Output/StdErr.InnerText Of /TestRun/Results/WebTestResultOutput/Output/StdErr.InnerText Of /TestRun/Results/TestResultAggregation/Output/StdErr.InnerText
Agentnaam /TestRun/Results/UnitTestResult.Attributes["computerName"]. Value Or /TestRun/Results/WebTestResult.Attributes["computerName"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["computerName"]. Waarde
Testbestand /TestRun/TestDefinitions/UnitTest.Attributes["storage"]. Waarde
Prioriteit /TestRun/TestDefinitions/UnitTest.Attributes["priority"]. Waarde

Notitie

Duur wordt alleen gebruikt wanneer Datum gestart en Datum voltooid niet beschikbaar zijn.

De volledig gekwalificeerde naamindeling voor testName is Namespace.Testclass.Methodname met een tekenlimiet van 512. Als de test gegevensgestuurd is en parameters bevat, bevat de tekenlimiet de parameters.

Tijdens het publiceren van het testresultaat wordt mogelijk deze fout weergegeven: Kan testresultaten niet publiceren: Ongeldige prioriteit opgegeven

Deze fout treedt op als voor een van de testmethoden een prioriteit is ingesteld boven 255, de prioriteit van de testmethode in de code wordt opgelost en de tests opnieuw worden uitgevoerd. U kunt het gegenereerde trx-bestand bekijken om alle tests met een hogere prioriteit dan 255 te zien.

Ondersteuning voor bijlagen

De taak Testresultaten publiceren biedt ondersteuning voor bijlagen voor zowel testuitvoering als testresultaten voor de volgende indelingen. Voor openbare projecten ondersteunen we 2 GB aan totale bijlagen.

Visual Studio Test (TRX)

Bereik Type Pad
Testuitvoering Gegevensverzamelaar /TestRun/ResultSummary/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Waarde
Testresultaat /TestRun/ResultSummary/ResultFiles/ResultFile.Attributes["path"]. Waarde
Codedekking /TestRun/TestSettings/Execution/AgentRule/DataCollectors/DataCollector/Configuration/CodeCoverage/Regular/CodeCoverageItem.Attributes["binaryFile"]. Value And /TestRun/TestSettings/Execution/AgentRule/DataCollectors/DataCollector/Configuration/CodeCoverage/Regular/CodeCoverageItem.Attributes["pdbFile"]. Waarde
Testresultaat Gegevensverzamelaars /TestRun/Results/UnitTestResult/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Value Or /TestRun/Results/WebTestResult/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Value Or /TestRun/Results/TestResultAggregation/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Waarde
Testresultaat /TestRun/Results/UnitTestResult/ResultFiles/ResultFile.Attributes["path"]. Value Or /TestRun/Results/WebTestResult/ResultFiles/ResultFile.Attributes["path"]. Value Of /TestRun/Results/TestResultAggregation/ResultFiles/ResultFile.Attributes["path"]. Waarde

Notitie

De optie voor het uploaden van het testresultatenbestand als bijlage is een standaardoptie in de taak, die van toepassing is op alle indelingen.

Voorbeelden

Docker

Voor Docker-apps zijn er veel manieren om uw toepassing te bouwen en tests uit te voeren:

  • Bouwen en testen in een build-pijplijn: builds en tests worden uitgevoerd in de pijplijn en testresultaten worden gepubliceerd met behulp van de taak Testresultaten publiceren .
  • Bouwen en testen met een Dockerfile met meerdere fasen: builds en tests worden uitgevoerd in de container met behulp van een Docker-bestand met meerdere fasen, omdat dergelijke testresultaten niet terug worden gepubliceerd naar de pijplijn.
  • Bouw, test en publiceer resultaten met een Dockerfile: builds en tests worden uitgevoerd in de container en de resultaten worden weer gepubliceerd naar de pijplijn. Zie het voorbeeld hieronder.

Resultaten bouwen, testen en publiceren met een Docker-bestand

In deze benadering bouwt u uw code en voert u tests uit in de container met behulp van een Docker-bestand. De testresultaten worden vervolgens gekopieerd naar de host om naar de pijplijn te worden gepubliceerd. Als u de testresultaten wilt publiceren naar Azure Pipelines, kunt u de taak Testresultaten publiceren gebruiken. De uiteindelijke installatiekopieën worden gepubliceerd naar Docker of Azure Container Registry.

Code ophalen
  1. Maak een Dockerfile.build bestand in de hoofdmap van uw projectmap met het volgende:

    # 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
    

    Dit bestand bevat de instructies voor het bouwen van code en het uitvoeren van tests. De tests worden vervolgens gekopieerd naar een bestand testresults.trx in de container.

  2. Als u de uiteindelijke installatiekopie zo klein mogelijk wilt maken, die alleen de runtime- en implementatieartefacten bevat, vervangt u de inhoud van de bestaande Dockerfile door het volgende:

    # 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"]
    
De build-pijplijn definiëren
  1. Als u een Docker Hub-account hebt en de installatiekopieën naar uw Docker-register wilt pushen, vervangt u de inhoud van het .vsts-ci.docker.yml bestand door het volgende:

    # 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)
    

    Als u een Azure Container Registry configureert en de installatiekopieën naar dat register wilt pushen, vervangt u de inhoud van het .vsts-ci.yml bestand door het volgende:

    # 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)
    
  2. Push de wijziging naar de hoofdbranch in uw opslagplaats.

  3. Als u Azure Container Registry gebruikt, moet u ervoor zorgen dat u het register vooraf hebt gemaakt in de Azure Portal. Kopieer de gebruikersnaam en het wachtwoord van de beheerder die worden weergegeven in de sectie Toegangssleutels van de registerinstellingen in Azure Portal.

  4. Werk uw build-pijplijn bij met het volgende

    • Agentpool: Hosted Ubuntu 1604
      • dockerId: stel de waarde in op uw Docker-id voor DockerHub of de gebruikersnaam van de beheerder voor Azure Container Registry.
      • dockerPassword: stel de waarde in op uw wachtwoord voor DockerHub of het beheerderswachtwoord Azure Container Registry.
    • YAML-bestandspad: /.vsts-ci.docker.yml
  5. Zet een nieuwe build in de wachtrij en watch deze een Docker-installatiekopieën maken en pushen naar uw register en de testresultaten naar Azure DevOps.

Vereisten

Vereiste Beschrijving
Pijplijntypen YAML, klassieke build, klassieke release
Wordt uitgevoerd op Agent, DeploymentGroup
Eisen Geen
Functies Deze taak voldoet niet aan eventuele vereisten voor volgende taken in de taak.
Opdrachtbeperkingen Alle
Instelbare variabelen Alle
Agentversie 2.0.0 of hoger
Taakcategorie Testen