PublishTestResults@2 – Teszteredmények közzététele v2 feladat

Teszteredmények közzététele az Azure Pipelinesban.

Teszteredmények közzététele az Azure Pipelinesban/TFS-ben.

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.

Bevitelek

testResultsFormat - Teszteredmény formátuma
Bemeneti alias: testRunner. string. Kötelező. Engedélyezett értékek: JUnit, NUnit, VSTest, XUnit, CTest. Alapértelmezett érték: JUnit.

Megadja a közzétenni kívánt eredményfájlok formátumát. A következő formátumok támogatottak: CTest, JUnit, NUnit 2, NUnit 3, Visual Studio Test (TRX) és xUnit 2.


testResultsFormat - Teszteredmény formátuma
Bemeneti alias: testRunner. string. Kötelező. Engedélyezett értékek: JUnit, NUnit, VSTest, XUnit. Alapértelmezett érték: JUnit.

Megadja a közzétenni kívánt eredményfájlok formátumát. A következő formátumok támogatottak: CTest, JUnit, NUnit 2, NUnit 3, Visual Studio Test (TRX) és xUnit 2.


testResultsFiles - Teszteredmények fájljai
string. Kötelező. Alapértelmezett érték: **/TEST-*.xml.

Egy vagy több teszteredményfájlt határoz meg.

  • Használhat egymappás helyettesítő karaktereket (*) és rekurzív helyettesítő karaktereket (**). Megkeresi például az összes olyan XML-fájlt, **/TEST-*.xml amelynek a neve az összes alkönyvtárban kezdődik TEST- . Ha a VSTestet használja teszteredmény-formátumként, a fájltípust módosítani kell például a következőre .trx : **/TEST-*.trx
  • Több elérési út is megadható, egy új sor választja el egymástól.
  • Emellett elfogadja a minimatch mintákat is.

Például kizárja a !TEST[1-3].xml , TEST2.xmlvagy TEST3.xmlnevű TEST1.xmlfájlokat.


searchFolder - Keresés mappa
string. Alapértelmezett érték: $(System.DefaultWorkingDirectory).

Választható. Megadja a teszteredmény-fájlok kereséséhez szükséges mappát.


mergeTestResults - Teszteredmények egyesítése
boolean. Alapértelmezett érték: false.

Ha ennek a logikai értéknek a trueértéke , a feladat az összes fájlból származó teszteredményeket egyetlen tesztfuttatáson jelenti. Ha az érték false, a feladat minden teszteredményfájlhoz külön tesztfuttatást hoz létre.

Megjegyzés

Az egyesítési teszteredmények beállításával egyesítheti ugyanabból a tesztelési keretrendszerből származó fájlokat, hogy az eredmények leképezése és időtartama megfelelően legyen kiszámítva.


failTaskOnFailedTests - Sikertelen tesztelési hibák esetén
boolean. Alapértelmezett érték: false.

Választható. Ha ennek a logikai értéknek a trueértéke , a feladat meghiúsul, ha az eredményfájlban lévő tesztek bármelyike sikertelenként van megjelölve. Az alapértelmezett érték a false, amely egyszerűen közzéteszi az eredményeket az eredményfájlból.


failTaskOnFailureToPublishResults - Sikertelen, ha hiba történt a teszteredmények közzétételekor
boolean. Alapértelmezett érték: false.

Ha truea , a feladat meghiúsul, ha a teszteredmények közzététele sikertelen.


failTaskOnMissingResultsFile - Sikertelen, ha nem találhatók eredményfájlok
boolean. Alapértelmezett érték: false.

Sikertelen feladat, ha nem találhatók eredményfájlok.


testRunTitle - Tesztfuttatás címe
string.

Választható. Megadja annak a tesztfuttatásnak a nevét, amelyen az eredményeket jelenteni fogja. A buildelési vagy kiadási folyamatban deklarált változónevek használhatók.


buildPlatform - Platform létrehozása
Bemeneti alias: platform. string.

Választható. Meghatározza azt a buildplatformot, amelyen a tesztfuttatást jelenteni kell. Például: x64 vagy x86. Ha definiált egy változót a platformhoz a buildelési feladatban, használja itt.


buildConfiguration - Buildkonfiguráció
Bemeneti alias: configuration. string.

Választható. Megadja azt a buildkonfigurációt, amelyen a tesztfuttatást jelenteni kell. Például: Debug vagy Release. Ha definiált egy változót a konfigurációhoz a buildelési feladatban, használja itt.


publishRunAttachments - Teszteredmények fájljainak feltöltése
boolean. Alapértelmezett érték: true.

Választható. Ha ez a logikai érték true, a feladat az összes teszteredményfájlt mellékletként tölti fel a tesztfuttatásba.


Feladatvezérlési lehetőségek

Minden feladathoz tartoznak vezérlési lehetőségek is a feladat bemenetei mellett. További információ: Vezérlési beállítások és gyakori feladattulajdonságok.

Kimeneti változók

Nincsenek.

Megjegyzések

Ez a feladat közzéteszi a teszteredményeket az Azure Pipelinesban vagy a TFS-ben a tesztek végrehajtásakor, hogy átfogó tesztjelentési és elemzési élményt nyújtson. Használhatja a választott tesztfuttatót, amely támogatja a kívánt eredményformátumot. A támogatott eredményformátumok közé tartozik a CTest, a JUnit (beleértve a PHPUnitot), az NUnit 2, az NUnit 3, a Visual Studio Test (TRX) és az xUnit 2.

Más beépített feladatok, például a Visual Studio tesztfeladat és a Dot NetCore CLI-feladat automatikusan közzéteszik a teszteredményeket a folyamatban. Az olyan feladatok, mint az Ant, a Maven, a Gulp, a Grunt és az Xcode , közzétételi eredményeket biztosítanak a feladaton belül, vagy olyan kódtárakat hozhatnak létre, mint a Cobertura és a JaCoCo. Ha ezek közül a tevékenységek közül bármelyiket használja, nincs szükség külön Teszteredmények közzététele feladatra a folyamatban.

A közzétett teszteredmények a folyamat összefoglalásának Tesztek lapján jelennek meg. Az eredmények segítenek a folyamat minőségének mérésében, a nyomon követhetőség áttekintésében, a hibák elhárításában és a hibák tulajdonjogának meghajtásában.

Az alábbi példa azt mutatja be, hogy a feladat a teszteredmények közzétételére van konfigurálva.

A tesztelőzmények lap megnyitása

Ezt a feladatot egy buildfolyamatban is használhatja a tesztek Azure Pipelinesban vagy TFS-ben való futtatásakor létrehozott kódlefedettségi eredmények közzétételére a lefedettségi jelentés készítése érdekében.

Előfeltételek

Ha windowsos saját üzemeltetésű ügynököt használ, a gépen telepítve kell lennie a következő előfeltételeknek:

A tevékenység alapértelmezései

Az alapértelmezett beállítás JUnit formátumot használ a teszteredmények közzétételéhez. Ha a VSTestet használja testRunnerként, a testResultsFiles beállítást a következőre kell módosítani: **/TEST-*.trx.

A testResultsFormat a testRunner bemeneti neve aliasa. Az eredményfájlokat több futó is létrehozhatja, nem csak egy adott futó. A jUnit-eredmények formátumát például számos futó támogatja, és nem csak a jUnit.

A Python teszteredményeinek YAML használatával történő közzétételéhez tekintse meg a témakörök Ökoszisztémák szakaszában található Pythont, amely más nyelvekre vonatkozó példákat is tartalmaz.

Eredményformátumok leképezése

Ez a táblázat a buildelési vagy kiadási összegzés Tesztek lapján jelentett mezőket, valamint a támogatott teszteredmény-formátumok attribútumaival való megfeleltetést sorolja fel.

Hatókör Mező Visual Studio Test (TRX)
Tesztfuttatás Cím A feladatban megadott tesztfuttatás címe
Kezdés dátuma /TestRun/Times.Attributes["start"]. Érték
Befejezett dátum /TestRun/Times.Attributes["finish"]. Érték
Időtartam Befejezett dátum – Kezdés dátuma
Mellékletek Tekintse meg az alábbi Mellékletek támogatási szakaszát
Teszteredmény Cím /TestRun/Results/UnitTestResult.Attributes["testName"]. Value Or /TestRun/Results/WebTestResult.Attributes["testName"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["testName"]. Érték
Kezdés dátuma /TestRun/Results/UnitTestResult.Attributes["startTime"]. Value Or /TestRun/Results/WebTestResult.Attributes["startTime"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Érték
Befejezett dátum /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"]. Érték
Időtartam /TestRun/Results/UnitTestResult.Attributes["duration"]. Value Vagy /TestRun/Results/WebTestResult.Attributes["duration"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["duration"]. Érték
Tulajdonos /TestRun/TestDefinitions/UnitTest/Owners/Owner.Attributes["name"]. Érték
Eredmény /TestRun/Results/UnitTestResult.Attributes["outcome"]. Value Or /TestRun/Results/WebTestResult.Attributes["outcome"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["outcome"]. Érték
Hibaüzenet /TestRun/Results/UnitTestResult/Output/ErrorInfo/Message.InnerText vagy /TestRun/Results/WebTestResultOutput/ErrorInfo/Message.InnerText vagy /TestRun/Results/TestResultAggregation/Output/ErrorInfo/Message.InnerText
Stack-nyomkövetés /TestRun/Results/UnitTestResult/Output/ErrorInfo/StackTrace.InnerText or /TestRun/Results/WebTestResultOutput/ErrorInfo/StackTrace.InnerText Or /TestRun/Results/TestResultAggregation/Output/ErrorInfo/StackTrace.InnerText
Mellékletek Tekintse meg az alábbi Mellékletek támogatási szakaszát
Konzolnapló /TestRun/Results/UnitTestResult/Output/StdOut.InnerText vagy /TestRun/Results/WebTestResultOutput/Output/StdOut.InnerText vagy /TestRun/Results/TestResultAggregation/Output/StdOut.InnerText
Konzolhibanapló /TestRun/Results/UnitTestResult/Output/StdErr.InnerText Vagy /TestRun/Results/WebTestResultOutput/Output/StdErr.InnerText or /TestRun/Results/TestResultAggregation/Output/StdErr.InnerText
Ügynök neve /TestRun/Results/UnitTestResult.Attributes["computerName"]. Value Or /TestRun/Results/WebTestResult.Attributes["computerName"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["computerName"]. Érték
Tesztfájl /TestRun/TestDefinitions/UnitTest.Attributes["storage"]. Érték
Prioritás /TestRun/TestDefinitions/UnitTest.Attributes["priority"]. Érték

Megjegyzés

Az időtartamot csak akkor használja a rendszer, ha a Dátum elindult és a Befejezett dátum nem érhető el.

A testName teljes névformátuma : Namespace.Testclass.Methodname , karakterkorlátja 512. Ha a teszt adatvezérelt, és paraméterekkel rendelkezik, a karakterkorlát tartalmazza a paramétereket.

A teszteredmény közzétételekor a következő hibaüzenet jelenhet meg: Nem sikerült közzétenni a teszteredményeket: Érvénytelen prioritás van megadva

Ez a hiba akkor fordul elő, ha bármelyik tesztmetódus prioritása 255 fölé van állítva, javítsa ki a tesztmetódus prioritását a kódban, és hajtsa végre újra a teszteket. A létrehozott trx-fájl áttekintésével megtekintheti a 255-nél nagyobb prioritású teszteket.

Mellékletek támogatása

A Teszteredmények közzététele feladat támogatja a mellékleteket mind a tesztfuttatáshoz, mind a teszteredményekhez az alábbi formátumokhoz. Nyilvános projektek esetén összesen 2 GB mellékletet támogatunk.

Visual Studio Test (TRX)

Hatókör Típus Elérési út
Tesztfuttatás Adatgyűjtő /TestRun/ResultSummary/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Érték
Teszteredmény /TestRun/ResultSummary/ResultFiles/ResultFile.Attributes["path"]. Érték
Kódlefedettség /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"]. Érték
Teszteredmény Adatgyűjtők /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"]. Érték
Teszteredmény /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"]. Érték

Megjegyzés

A teszteredmény-fájl mellékletként való feltöltésének lehetősége a feladat alapértelmezett beállítása, amely minden formátumra alkalmazható.

Példák

Docker

Docker-alapú alkalmazások esetén számos módon készítheti el az alkalmazást, és futtathat teszteket:

  • Buildelési folyamat összeállítása és tesztelése: a folyamatban végrehajtott buildek és tesztek, valamint a teszteredmények közzététele a Teszteredmények közzététele feladattal történik.
  • Buildelés és tesztelés többszakaszos Docker-fájllal: a buildek és tesztek a tárolóban futnak egy többfázisú Docker-fájl használatával, mivel az ilyen teszteredmények nem kerülnek vissza a folyamatba.
  • Eredmények összeállítása, tesztelése és közzététele Docker-fájllal: a buildek és tesztek a tárolón belül futnak, az eredmények pedig újra közzé lesznek téve a folyamatban. Lásd az alábbi példát.

Eredmények létrehozása, tesztelése és közzététele Docker-fájllal

Ebben a megközelítésben egy Docker-fájl használatával hozza létre a kódot, és teszteket futtat a tárolóban. A teszteredmények ezután át lesznek másolva a gazdagépre, és közzé lesznek téve a folyamatban. A teszteredmények Azure Pipelinesban való közzétételéhez használhatja a Teszteredmények közzététele feladatot. A végső rendszerkép közzé lesz téve a Dockerben vagy Azure Container Registry.

A kód letöltése
  1. Hozzon létre egy Dockerfile.build fájlt a projektkönyvtár gyökerében a következőkkel:

    # 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
    

    Ez a fájl tartalmazza a kód összeállítására és a tesztek futtatására vonatkozó utasításokat. A rendszer ezután a teszteket a tárolóban lévő fájlba testresults.trx másolja.

  2. Ha a végső rendszerképet a lehető legkisebbre szeretné kicsinyíteni, amely csak a futtatókörnyezetet és az üzembehelyezési összetevőket tartalmazza, cserélje le a meglévő Dockerfile tartalmát a következőre:

    # 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"]
    
A buildelési folyamat definiálása
  1. Ha rendelkezik Docker Hub fiókkal, és le szeretné küldeni a rendszerképet a Docker-beállításjegyzékbe, cserélje le a fájl tartalmát a .vsts-ci.docker.yml következőre:

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

    Másik lehetőségként, ha konfigurál egy Azure Container Registry, és le szeretné küldeni a lemezképet a beállításjegyzékbe, cserélje le a fájl tartalmát a .vsts-ci.yml következőre:

    # 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. Küldje le a módosítást az adattár fő ágára.

  3. Ha Azure Container Registry használ, győződjön meg arról, hogy előre létrehozta a beállításjegyzéket a Azure Portal. Másolja ki az Azure Portal beállításjegyzék-beállításainak Hozzáférési kulcsok szakaszában látható rendszergazdai felhasználónevet és jelszót.

  4. Frissítse a buildfolyamatot a következőkkel

    • Ügynökkészlet: Hosted Ubuntu 1604
      • dockerId: Állítsa az értéket a DockerHub docker-azonosítójára vagy a Azure Container Registry rendszergazdai felhasználónevére.
      • dockerPassword: Állítsa be az értéket a DockerHubhoz tartozó jelszóra vagy a rendszergazdai jelszóra Azure Container Registry.
    • YAML-fájl elérési útja: /.vsts-ci.docker.yml
  5. Várjon egy új buildet, és watch hozzon létre és küldje le a Docker-rendszerképet a regisztrációs adatbázisba és a teszteredményeket az Azure DevOpsba.

Követelmények

Követelmény Leírás
Folyamattípusok YAML, klasszikus build, klasszikus kiadás
Futtatás: Ügynök, DeploymentGroup
Igények None
Képességek Ez a tevékenység nem felel meg a feladat későbbi tevékenységeire vonatkozó követelményeknek.
Parancskorlátozások Bármelyik
Változók beállítása Bármelyik
Ügynök verziója 2.0.0 vagy újabb
Feladatkategória Tesztelés