Dela via


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 med TEST- 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.xmleller 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 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. 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 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 inte går att publicera 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.

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

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.

Öppna testhistoriksidan

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:

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

  3. 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.

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