Dela via


PublishTestResults@2 – Publicera testresultat v2-uppgift

Publicera testresultat till Azure Pipelines.

Publicera testresultat till 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.

Indata

testResultsFormat - Testresultatformat
Indataalias: testRunner. string. Krävs. Tillåtna värden: JUnit, NUnit, VSTest, XUnit, CTest. Standardvärde: JUnit.

Anger formatet för de resultatfiler som du vill publicera. Följande format stöds: CTest, JUnit, NUnit 2, NUnit 3, Visual Studio Test (TRX) och xUnit 2.


testResultsFormat - Testresultatformat
Indataalias: testRunner. string. Krävs. Tillåtna värden: JUnit, NUnit, VSTest, XUnit. Standardvärde: JUnit.

Anger formatet för 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. Krävs. Standardvärde: **/TEST-*.xml.

Anger en eller flera testresultatfiler.

  • Du kan använda jokertecken med en mapp (*) och rekursiva jokertecken (**). Söker till exempel **/TEST-*.xml efter alla XML-filer vars namn börjar med TEST- i alla underkataloger. Om vstest används som testresultatformat bör filtypen ändras till .trx t.ex. **/TEST-*.trx
  • Flera sökvägar kan anges, avgränsade med en ny rad.
  • Dessutom accepteras minimatchmönster.

Exkluderar till exempel !TEST[1-3].xml filer med namnet TEST1.xml, TEST2.xmleller TEST3.xml.


searchFolder - Search mapp
string. Standardvärde: $(System.DefaultWorkingDirectory).

Valfritt. Anger mappen som ska söka efter testresultatfilerna.


mergeTestResults - Sammanslå testresultat
boolean. Standardvärde: false.

När det booleska värdet är truerapporterar aktiviteten testresultat från alla filer mot en enda testkörning. Om värdet är falseskapar aktiviteten en separat testkörning för varje testresultatfil.

Anteckning

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 truemisslyckas 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 uppstår fel vid publicering av testresultat
boolean. Standardvärde: false.

När truemisslyckas uppgiften om det uppstår fel i publiceringen av testresultat.


failTaskOnMissingResultsFile - Misslyckas om inga resultatfiler hittas
boolean. Standardvärde: false.

Aktiviteten misslyckas om inga resultatfiler hittas.


testRunTitle - Testkörningsrubrik
string.

Valfritt. Anger ett namn för testkörningen som resultaten ska rapporteras mot. Variabelnamn som deklareras i bygg- eller versionspipelinen kan användas.


buildPlatform - Skapa plattform
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 - Byggkonfiguration
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 trueladdar 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

Inga.

Kommentarer

Den här uppgiften publicerar testresultat till Azure Pipelines eller TFS när tester körs för att tillhandahålla en omfattande testrapportering och analysupplevelse. Du kan använda valfri testkörare 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 Test-uppgift och Dot NetCore CLI-uppgift , publicerar automatiskt testresultat till pipelinen. Uppgifter som Ant, Maven, Gulp, Grunt och Xcode ger publiceringsresultat som ett alternativ i uppgiften eller skapar bibliotek som Cobertura och JaCoCo. Om du använder någon av dessa uppgifter behöver du inte en separat uppgift för att publicera testresultat i pipelinen.

De publicerade testresultaten visas på fliken Tester i pipelinesammanfattningen. Resultaten hjälper dig att mäta pipelinekvalitet, granska spårbarhet, felsöka fel och ägarskap för enhetsfel.

I följande exempel visas att uppgiften har konfigurerats för att publicera testresultat.

Öppna testhistoriksidan

Du kan också använda den här uppgiften i en bygg-pipeline 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:

Standardvärden för aktiviteter

Standardalternativet använder JUnit-format för att publicera testresultat. När du använder VSTest som testRunner bör alternativet testResultsFiles ändras till **/TEST-*.trx.

testResultsFormat är ett alias för testRunner-indatanamnet . 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 Ekosystem i dessa avsnitt, som även innehåller exempel för andra språk.

Mappning av resultatformat

I den här tabellen visas de fält som rapporteras på fliken Tester i en versionssammanfattning och motsvarande mappning med attributen i de testresultatformat som stöds.

Omfång Fält Visual Studio Test (TRX)
Testkörning Rubrik Testkörningsrubriken som anges i aktiviteten
Startdatum /TestRun/Times.Attributes["start"]. Värde
Datumet har slutförts /TestRun/Times.Attributes["finish"]. Värde
Varaktighet Datumet har slutförts – Datumet startades
Bilagor Se avsnittet om stöd för bifogade filer nedan
Testresultat Rubrik /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["duration"]. Value Or /TestRun/Results/WebTestResult.Attributes["startTime"]. Value + /TestRun/Results/WebTestResult.Attributes["duration"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Value + /TestRun/Results/TestResultAggregation.Attributes["duration"]. Värde
Varaktighet /TestRun/Results/UnitTestResult.Attributes["duration"]. Value Or /TestRun/Results/WebTestResult.Attributes["duration"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["duration"]. Värde
Ägare /TestRun/TestDefinitions/UnitTest/Owners/Owner.Attributes["name"]. Värde
Resultat /TestRun/Results/UnitTestResult.Attributes["outcome"]. 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
Bilagor Se avsnittet om 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
Konsolfellogg /TestRun/Results/UnitTestResult/Output/StdErr.InnerText Or /TestRun/Results/WebTestResultOutput/Output/StdErr.InnerText Or /TestRun/Results/TestResultAggregation/Output/StdErr.InnerText
Agentnamn /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["priority"]. Värde

Anteckning

Varaktighet används endast när Datum som startats och Slutfört datum inte är tillgängligt.

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 innehåller teckengränsen parametrarna.

När du publicerar testresultatet kan det här felet visas: Det gick inte att publicera testresultatet: Ogiltig prioritet har angetts

Det här felet uppstår om någon av testmetoderna har en prioritet ö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 högre prioritet ä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 stöder vi 2 GB totalt antal bifogade filer.

Visual Studio Test (TRX)

Omfång Typ Sökväg
Testkörning Datainsamlare /TestRun/ResultSummary/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Värde
Testresultat /TestRun/ResultSummary/ResultFiles/ResultFile.Attributes["path"]. 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["path"]. Value Or /TestRun/Results/WebTestResult/ResultFiles/ResultFile.Attributes["path"]. Value Or /TestRun/Results/TestResultAggregation/ResultFiles/ResultFile.Attributes["path"]. Värde

Anteckning

Alternativet att ladda upp testresultatfilen som en bifogad fil är ett standardalternativ i aktiviteten, 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:

  • Skapa och testa i en bygg-pipeline: byggen och tester körs i pipelinen och testresultat publiceras med hjälp av uppgiften Publicera testresultat .
  • Skapa och testa med en Dockerfile i flera steg: byggen och tester körs i containern med hjälp av en Docker-fil i flera steg, eftersom sådana testresultat inte publiceras tillbaka till pipelinen.
  • Skapa, testa och publicera resultat med en Dockerfile: byggen 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 koden 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
  1. 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 i containern.

  2. 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
  1. 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 en 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)
    
  2. Push-överför ändringen till huvudgrenen på lagringsplatsen.

  3. Om du använder Azure Container Registry kontrollerar du att du har skapat registret i Azure Portal. Kopiera administratörens användarnamn och lösenord som visas i avsnittet Åtkomstnycklar i registerinställningarna i Azure Portal.

  4. 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
  5. Köa en ny version och watch den skapa och push-överföra en Docker-avbildning till registret och testresultaten till Azure DevOps.

Krav

Krav Beskrivning
Pipelinetyper YAML, klassisk version, klassisk version
Körs på Agent, DeploymentGroup
Krav Ingen
Funktioner Den här aktiviteten uppfyller inte några krav för efterföljande uppgifter i jobbet.
Kommandobegränsningar Valfri
Inställningsbara variabler Valfri
Agentversion 2.0.0 eller senare
Uppgiftskategori Testa