PublishTestResults@2 – Publicera testresultat v2-uppgift
Publicera testresultat till Azure Pipelines.
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.
Ingångar
testResultsFormat
-
Testresultatformat
Indataalias: testRunner
.
string
. Obligatoriskt. Tillåtna värden: JUnit
, NUnit
, VSTest
, XUnit
, CTest
. Standardvärde: JUnit
.
Anger formatet på de resultatfiler som du vill publicera. Följande format stöds: CTest, JUnit, NUnit 2, NUnit 3, Visual Studio Test (TRX) och xUnit 2.
testResultsFiles
-
Testresultatfiler
string
. Obligatoriskt. Standardvärde: **/TEST-*.xml
.
Anger en eller flera testresultatfiler.
- Du kan använda jokertecken med en mapp (
*
) och rekursiva jokertecken (**
). Till exempel söker**/TEST-*.xml
efter alla XML-filer vars namn börjar medTEST-
i alla underkataloger. Om du använder VSTest som testresultatformat bör filtypen ändras till.trx
t.ex.**/TEST-*.trx
- Flera sökvägar kan anges, avgränsade med en ny rad.
- Accepterar dessutom minimatchmönster.
!TEST[1-3].xml
exkluderar till exempel filer med namnet TEST1.xml
, TEST2.xml
eller TEST3.xml
.
searchFolder
-
sökmapp
string
. Standardvärde: $(System.DefaultWorkingDirectory)
.
Valfritt. Anger den mapp som ska söka efter testresultatfilerna.
mergeTestResults
-
Slå samman testresultat
boolean
. Standardvärde: false
.
När det här booleska värdet är true
rapporterar aktiviteten testresultat från alla filer mot en enda testkörning. Om värdet är false
skapar aktiviteten en separat testkörning för varje testresultatfil. För att optimera för bättre prestanda sammanfogas alltid resultaten till en enda körning om det finns fler än 100 resultatfiler även om det här alternativet är inställt på false
.
Anmärkning
Använd inställningen för sammanslagningstestresultat för att kombinera filer från samma testramverk för att säkerställa att resultatmappningen och varaktigheten beräknas korrekt.
failTaskOnFailedTests
-
Misslyckas om det finns testfel
boolean
. Standardvärde: false
.
Valfritt. När det booleska värdet är true
misslyckas aktiviteten om något av testerna i resultatfilen markeras som misslyckad. Standardvärdet är false
, som helt enkelt publicerar resultatet från resultatfilen.
failTaskOnFailureToPublishResults
-
Misslyckas om det inte går att publicera testresultat
boolean
. Standardvärde: false
.
När true
misslyckas uppgiften om det uppstår fel i publiceringen av testresultat.
failTaskOnMissingResultsFile
-
misslyckas om inga resultatfiler hittas
boolean
. Standardvärde: false
.
Uppgiften misslyckas om inga resultatfiler hittas.
testRunTitle
-
Testkörningstitel
string
.
Valfritt. Anger ett namn för testkörningen som resultatet ska rapporteras mot. Variabelnamn som deklareras i bygg- eller versionspipelinen kan användas.
buildPlatform
-
Build Platform
Indataalias: platform
.
string
.
Valfritt. Anger den byggplattform som testkörningen ska rapporteras mot. Till exempel: x64
eller x86
. Om du har definierat en variabel för plattformen i din bygguppgift använder du den här.
buildConfiguration
-
Build Configuration
Indataalias: configuration
.
string
.
Valfritt. Anger den byggkonfiguration som testkörningen ska rapporteras mot. Till exempel: Debug
eller Release
. Om du har definierat en variabel för konfigurationen i bygguppgiften använder du den här.
publishRunAttachments
-
Ladda upp testresultatfiler
boolean
. Standardvärde: true
.
Valfritt. När det booleska värdet är true
laddar aktiviteten upp alla testresultatfiler som bifogade filer till testkörningen.
Kontrollalternativ för aktivitet
Alla aktiviteter har kontrollalternativ utöver sina aktivitetsindata. Mer information finns i Kontrollalternativ och vanliga uppgiftsegenskaper.
Utdatavariabler
Ingen.
Anmärkningar
Den här uppgiften publicerar testresultat till Azure Pipelines eller TFS när tester körs för att ge en omfattande testrapportering och analysupplevelse. Du kan använda valfri testlöpare som stöder det resultatformat som du behöver. Exempel på resultatformat som stöds är CTest, JUnit (inklusive PHPUnit), NUnit 2, NUnit 3, Visual Studio Test (TRX) och xUnit 2.
Andra inbyggda uppgifter, till exempel Visual Studio-testaktivitet och Dot NetCore CLI-uppgift automatiskt publicera testresultat till pipelinen. Uppgifter som Ant, Maven, Gulp, Gruntoch Xcode ge publiceringsresultat som ett alternativ i uppgiften eller skapa bibliotek som Cobertura och JaCoCo. Om du använder någon av dessa uppgifter behöver du inte en separat Publicera testresultat uppgift i pipelinen.
De publicerade testresultaten visas på fliken Tester i pipelinesammanfattningen. Resultaten hjälper dig att mäta pipelinekvalitet, granska spårningsbarhet, felsöka fel och ägarskap för enhetsfel.
I följande exempel visas att uppgiften har konfigurerats för att publicera testresultat.
Du kan också använda den här uppgiften i en byggpipeline för att publicera kodtäckningsresultat som genereras när du kör tester till Azure Pipelines eller TFS för att få täckningsrapportering.
Förutsättningar
Om du använder en lokalt installerad Windows-agent måste datorn ha den här förutsättningen installerad:
- .NET Framework 4.6.2 eller senare
Standardvärden för aktivitet
Standardalternativet använder JUnit-format för att publicera testresultat. När du använder VSTest som testRunnerbör alternativet testResultsFiles ändras till **/TEST-*.trx
.
testResultsFormat är ett alias för testRunner indatanamn. Resultatfilerna kan produceras av flera löpare, inte bara en specifik löpare. Till exempel stöds jUnit-resultatformatet av många löpare och inte bara jUnit.
Information om hur du publicerar testresultat för Python med YAML finns i Python- i avsnittet Ecosystems i dessa avsnitt, som även innehåller exempel på andra språk.
Mappning av resultatformat
Den här tabellen visar de fält som rapporteras på fliken Tester i en versions- eller versionssammanfattning och motsvarande mappning med attributen i testresultatformaten som stöds.
Definitionsområde | Fält | Visual Studio-test (TRX) |
---|---|---|
Testkörning | Titel | Testkörningsrubrik anges i aktiviteten |
Startdatum | /TestRun/Times.Attributes["starta"]. Värde | |
Datumet har slutförts | /TestRun/Times.Attributes["slutför"]. Värde | |
Varaktighet | Datumet har slutförts – Datumet har startats | |
Bifogade filer | Se stöd för bifogade filer nedan | |
Testresultat | Titel | /TestRun/Results/UnitTestResult.Attributes["testName"]. Value Or /TestRun/Results/WebTestResult.Attributes["testName"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["testName"]. Värde |
Startdatum | /TestRun/Results/UnitTestResult.Attributes["startTime"]. Value Or /TestRun/Results/WebTestResult.Attributes["startTime"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Värde | |
Datumet har slutförts | /TestRun/Results/UnitTestResult.Attributes["startTime"]. Value + /TestRun/Results/UnitTestResult.Attributes["varaktighet"]. Value Or /TestRun/Results/WebTestResult.Attributes["startTime"]. Value + /TestRun/Results/WebTestResult.Attributes["varaktighet"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Värde + /TestRun/Results/TestResultAggregation.Attributes["varaktighet"]. Värde | |
Varaktighet | /TestRun/Results/UnitTestResult.Attributes["varaktighet"]. Value Or /TestRun/Results/WebTestResult.Attributes["varaktighet"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["duration"]. Värde | |
Ägare | /TestRun/TestDefinitions/UnitTest/Owners/Owner.Attributes["namn"]. Värde | |
Utfall | /TestRun/Results/UnitTestResult.Attributes["utfall"]. Value Or /TestRun/Results/WebTestResult.Attributes["outcome"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["outcome"]. Värde | |
Felmeddelande | /TestRun/Results/UnitTestResult/Output/ErrorInfo/Message.InnerText or /TestRun/Results/WebTestResultOutput/ErrorInfo/Message.InnerText or /TestRun/Results/TestResultAggregation/Output/ErrorInfo/Message.InnerText | |
Stackspårning | /TestRun/Results/UnitTestResult/Output/ErrorInfo/StackTrace.InnerText or /TestRun/Results/WebTestResultOutput/ErrorInfo/StackTrace.InnerText Or /TestRun/Results/TestResultAggregation/Output/ErrorInfo/StackTrace.InnerText | |
Bifogade filer | Se stöd för bifogade filer nedan | |
Konsollogg | /TestRun/Results/UnitTestResult/Output/StdOut.InnerText or /TestRun/Results/WebTestResultOutput/Output/StdOut.InnerText or /TestRun/Results/TestResultAggregation/Output/StdOut.InnerText | |
Fellogg för konsolen | /TestRun/Results/UnitTestResult/Output/StdErr.InnerText Or /TestRun/Results/WebTestResultOutput/Output/StdErr.InnerText Or /TestRun/Results/TestResultAggregation/Output/StdErr.InnerText | |
Agentens namn | /TestRun/Results/UnitTestResult.Attributes["computerName"]. Value Or /TestRun/Results/WebTestResult.Attributes["computerName"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["computerName"]. Värde | |
Testfil | /TestRun/TestDefinitions/UnitTest.Attributes["storage"]. Värde | |
Prioritet | /TestRun/TestDefinitions/UnitTest.Attributes["prioritet"]. Värde |
Anmärkning
Varaktighet används endast när datum startades och slutförda inte är tillgängliga.
Det fullständigt kvalificerade namnformatet för testName är Namespace.Testclass.Methodname med en teckengräns på 512. Om testet är datadrivet och har parametrar kommer teckengränsen att innehålla parametrarna.
När du publicerar testresultatet kan det här felet visas: Det gick inte att publicera testresultat: Ogiltig prioritet har angetts
Det här felet uppstår om någon av testmetoderna har prioriteten över 255, åtgärdar testmetodens prioritet i koden och kör testerna igen. Du kan granska trx-filen som genererats för att se alla tester som har prioritet större än 255.
Stöd för bifogade filer
Uppgiften Publicera testresultat har stöd för bifogade filer för både testkörning och testresultat för följande format. För offentliga projekt har vi stöd för 2 GB totalt antal bifogade filer.
Visual Studio-test (TRX)
Definitionsområde | Typ | Väg |
---|---|---|
Testkörning | Datainsamlare | /TestRun/ResultSummary/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Värde |
Testresultat | /TestRun/ResultSummary/ResultFiles/ResultFile.Attributes["sökväg"]. Värde | |
Kodtäckning | /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"]. Värde | |
Testresultat | Datainsamlare | /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"]. Värde |
Testresultat | /TestRun/Results/UnitTestResult/ResultFiles/ResultFile.Attributes["sökväg"]. Value Or /TestRun/Results/WebTestResult/ResultFiles/ResultFile.Attributes["sökväg"]. Value Or /TestRun/Results/TestResultAggregation/ResultFiles/ResultFile.Attributes["sökväg"]. Värde |
Anmärkning
Alternativet att ladda upp testresultatfilen som en bifogad fil är ett standardalternativ i uppgiften, som gäller för alla format.
Exempel
Docker
För Docker-baserade appar finns det många sätt att skapa ditt program och köra tester:
- Build and test in a build pipeline: builds and tests execute in the pipeline and test results are published using the Publish Test Results task .Build and test in a build pipeline: builds and tests execute in the pipeline and test results are published using the Publish Test Results task.
- Build and test with a Multi-stage Dockerfile: builds and tests execute inside the container using a multi-stage Docker file, as such test results are not published back to the pipeline.
- Skapa, testa och publicera resultat med en Dockerfile-: versioner och tester körs i containern och resultaten publiceras tillbaka till pipelinen. Se exemplet nedan.
Skapa, testa och publicera resultat med en Docker-fil
I den här metoden skapar du din kod och kör tester i containern med hjälp av en Docker-fil. Testresultaten kopieras sedan till värden som ska publiceras till pipelinen. Om du vill publicera testresultaten till Azure Pipelines kan du använda uppgiften Publicera testresultat. Den slutliga avbildningen publiceras till Docker eller Azure Container Registry.
Hämta koden
Skapa en
Dockerfile.build
fil i roten av projektkatalogen med följande:# 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
Den här filen innehåller instruktioner för att skapa kod och köra tester. Testerna kopieras sedan till en fil
testresults.trx
inuti containern.Om du vill göra den slutliga avbildningen så liten som möjligt, som endast innehåller körnings- och distributionsartefakter, ersätter du innehållet i den befintliga
Dockerfile
med följande:# 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"]
Definiera bygg-pipelinen
Om du har ett Docker Hub-konto och vill skicka avbildningen till Docker-registret ersätter du innehållet i
.vsts-ci.docker.yml
-filen med följande:# 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)
Om du konfigurerar ett Azure Container Registry och vill skicka avbildningen till registret ersätter du innehållet i
.vsts-ci.yml
-filen med följande:# 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-överför ändringen till huvudgrenen på lagringsplatsen.
Om du använder Azure Container Registry kontrollerar du att du har förskapade registret i Azure-portalen. Kopiera administratörens användarnamn och lösenord som visas i avsnittet Åtkomstnycklar i registerinställningarna i Azure-portalen.
Uppdatera bygg-pipelinen med följande
-
Agentpool:
Hosted Ubuntu 1604
- dockerId: Ange värdet till docker-ID:t för DockerHub eller administratörsanvändarnamnet för Azure Container Registry.
- dockerPassword: Ange värdet till ditt lösenord för DockerHub eller administratörslösenordet Azure Container Registry.
-
YAML-filsökväg:
/.vsts-ci.docker.yml
-
Agentpool:
Köa en ny version och se den skapa och skicka en Docker-avbildning till registret och testresultaten till Azure DevOps.
Krav
Krav | Beskrivning |
---|---|
Pipelinetyper | YAML, klassisk version, klassisk version |
Körs på | Agent, DeploymentGroup |
kräver | Ingen |
funktioner | Den här aktiviteten uppfyller inte några krav på efterföljande uppgifter i jobbet. |
Kommandobegränsningar | Vilken som helst |
variabler som kan | Vilken som helst |
Agentversion | 2.0.0 eller senare |
Aktivitetskategori | Test |