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 metTEST-
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.xml
of TEST3.xml
uit.
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 true
de 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 true
mislukt 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
- Vereisten
- Standaardwaarden voor taken
- Toewijzing van resultaatindelingen
- Ondersteuning voor bijlagen
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.
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:
- .NET Framework 4.6.2 of een latere versie
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
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.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
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)
Push de wijziging naar de hoofdbranch in uw opslagplaats.
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.
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
- Agentpool:
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 |