Megosztás:


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

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

Szinopszis

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

Bemenetek

testResultsFormat - Teszteredmény formátuma
Bemeneti alias: testRunner. string. Szükséges. Engedélyezett értékek: JUnit, NUnit, VSTest, XUnit, CTest. Alapértelmezett érték: JUnit.

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

Jótanács

VSTest formátum a TRX formátumra utal. Tehát akkor is működik, ha a TRX-et a Microsoft.Testing.Platform (MTP) használatával készíti elő, és nem a VSTestre jellemző. Az érték történelmi okokból, az MTP bevezetése előtt VSTest.


testResultsFiles - teszteredmény-fájlok
string. Szükséges. Alapértelmezett érték: **/TEST-*.xml.

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

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

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


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

Opcionális. 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 a logikai érték true, a feladat az összes fájlból származó teszteredményeket jelenti egyetlen teszt futtatásához. Ha az érték false, a feladat külön tesztfuttatást hoz létre az egyes teszteredmény-fájlokhoz. A jobb teljesítmény érdekében az eredmények mindig egyetlen futtatásba lesznek egyesítve, ha több mint 100 találatfájl van, még akkor is, ha ez a beállítás falsevan beállítva.

Megjegyzés

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


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

Opcionális. Ha a logikai érték true, 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 a teszteredmények közzététele sikertelen
boolean. Alapértelmezett érték: false.

Ha true, 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ó eredményfájl.


testRunTitle - tesztelési cím
string.

Opcionális. 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 - buildplatform-
Bemeneti alias: platform. string.

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


buildConfiguration - buildkonfigurációs
Bemeneti alias: configuration. string.

Opcionális. Azt a buildkonfigurációt adja meg, amely alapján 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ény-fájlok feltöltése
boolean. Alapértelmezett érték: true.

Opcionális. Ha a logikai érték true, a feladat feltölti az összes teszteredményfájlt mellékletként a tesztfuttatáshoz.


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ők és gyakori feladattulajdonságok.

Kimeneti változók

Nincs.

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. Támogatott találatformátumok: CTest, JUnit (beleértve PHPUnit), NUnit 2, NUnit 3, Visual Studio Test (TRX) és xUnit 2.

Egyéb beépített feladatok, például Visual Studio-tesztfeladat és Dot NetCore CLI-feladat, automatikusan közzéteszik a teszteredményeket a folyamaton. Az olyan feladatok, mint a Ant, Maven, Gulp, Gruntés Xcode, közzétételi eredményeket biztosítanak a feladaton belül, vagy olyan kódtárakat hozhatnak létre, mint Cobertura és 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ételére feladatra a folyamatban.

A közzétett teszteredmények a folyamat összegzésében Tesztek lapon jelennek meg. Az eredmények segítenek felmérni a folyamat minőségét, áttekinteni a nyomon követhetőséget, a hibák elhárítását és a meghajtók tulajdonjogát.

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 kódlefedettségi eredmények közzétételére , amikor teszteket futtat az Azure Pipelinesban vagy a TFS-ben a lefedettségi jelentések lekérése érdekében.

Előfeltételek

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

A tevékenység alapértelmezései

Az alapértelmezett beállítás JUnit formátummal teszi közzé a teszteredményeket. Ha VSTestet használ a testRunner, a testResultsFiles beállítást **/TEST-*.trxkell módosítani.

testResultsFormat a testRunner bemeneti név 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.

Ha YAML-lel szeretné közzétenni a Python teszteredményeit, tekintse meg Python- a témakörök Ökoszisztémák című szakaszában, amely más nyelvekre is tartalmaz példákat.

Találatformátumok leképezése

Ez a táblázat felsorolja a Tesztek lapon jelentett mezőket, egy build vagy kiadás összegzésében, valamint a megfelelő leképezést a támogatott teszteredmény-formátumok attribútumaival.

Hatókör Mező Visual Studio-teszt (TRX)
tesztfuttatási Cím tesztfuttatási cím megadva a feladatban
Kezdés dátuma /TestRun/Times.Attributes[""]. Érték
Befejezés dátuma /TestRun/Times.Attributes["befejezési"]. Érték
Időtartam Befejezett dátum – Kezdés dátuma
Mellékletek Tekintse meg az alábbi Mellékletek támogatási című szakaszt
teszteredmények 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
Befejezés dátuma /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["időtartam"]. Érték vagy /TestRun/Results/WebTestResult.Attributes["időtartam"]. 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["eredménye"]. Érték vagy /TestRun/Results/WebTestResult.Attributes["eredménye"]. Value Or /TestRun/Results/TestResultAggregation.Attributes["eredmény"]. É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
Verem nyomkövetése /TestRun/Results/UnitTestResult/Output/ErrorInfo/StackTrace.InnerText Vagy /TestRun/Results/WebTestResultOutput/ErrorInfo/StackTrace.InnerText Vagy /TestRun/Results/TestResultAggregation/Output/ErrorInfo/StackTrace.InnerText
Mellékletek Tekintse meg az alábbi Mellékletek támogatási című szakaszt
Konzolnapló /TestRun/Results/UnitTestResult/Output/StdOut.InnerText Vagy /TestRun/Results/WebTestResultOutput/Output/StdOut.InnerText Vagy /TestRun/Results/TestResultAggregation/Output/StdOut.InnerText
Konzol hibanaplója /TestRun/Results/UnitTestResult/Output/StdErr.InnerText Vagy /TestRun/Results/WebTestResultOutput/Output/StdErr.InnerText Vagy /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
Fájl tesztelése /TestRun/TestDefinitions/UnitTest.Attributes["storage"]. Érték
Elsőbbség /TestRun/TestDefinitions/UnitTest.Attributes["prioritás"]. Érték

Megjegyzés

Időtartam csak akkor használatos, ha Kezdés dátuma és Befejezett dátum nem érhető el.

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

A teszt eredményének közzététele közben a következő hibaüzenet jelenhet meg: Nem sikerült közzétenni a teszt eredményeit: Érvénytelen prioritás van megadva

Ez a hiba akkor fordul elő, ha bármelyik vizsgálati módszer prioritása 255 felett van, 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 tesztelési eredményekhez a következő formátumokhoz. Nyilvános projektek esetén összesen 2 GB mellékletet támogatunk.

Visual Studio-teszt (TRX)

Hatókör Típus szerint Útvonal
tesztfuttatási Adatgyűjtő /TestRun/ResultSummary/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Érték
Teszteredmény /TestRun/ResultSummary/ResultFiles/ResultFile.Attributes["elérési út"]. É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["elérési út"]. 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 feladatban alapértelmezett beállítás, amely minden formátumra alkalmazható.

Példák

Kikötőmunkás

Docker-alapú alkalmazások esetén számos módon hozhatja létre 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 feladat használatával történik.
  • Többfázisú Dockerfile-: a buildek és tesztek többfázisú Docker-fájl használatával futnak a tárolóban, mivel az ilyen teszteredmények nem kerülnek vissza a folyamatba.
  • Dockerfile-használatával hozhat létre, tesztelhet és tehet közzé eredményeket: buildeket és teszteket hajt végre a tárolón belül, és az eredményeket közzéteszi a folyamat. 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, amelyet közzé kell tenni a folyamaton. 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 az Azure Container Registryben.

A kód lekérése
  1. Hozzon létre egy Dockerfile.build fájlt a projektkönyvtár gyökerénél 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 készítésére és a tesztek futtatására vonatkozó utasításokat. A tesztek ezután át lesznek másolva egy fájlba, testresults.trx a tárolón belül.

  2. Ha a végső rendszerképet a lehető legkisebbre szeretné kicsinyíteni, amely csak a futtatókörnyezetet és az üzembe helyezé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 .vsts-ci.docker.yml fájl tartalmát a 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)
    

    Ha konfigurál egy Azure Container Registryt, és le szeretné küldeni a rendszerképet a beállításjegyzékbe, cserélje le a .vsts-ci.yml fájl tartalmát a 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. A módosítás leküldése az adattár fő ágára.

  3. Ha az Azure Container Registryt használja, győződjön meg arról, hogy előre létrehozta a beállításjegyzék- az Azure Portalon. 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. A buildelési folyamat frissítése a következőkkel

    • ügynökkészlet: Hosted Ubuntu 1604
      • dockerId: Állítsa be az értéket a DockerHub Docker-azonosítójára vagy az Azure Container Registry rendszergazdai felhasználónevére.
      • dockerPassword: Állítsa be az értéket a DockerHubhoz vagy az Azure Container Registry rendszergazdai jelszavához.
    • YAML-fájl elérési útja: /.vsts-ci.docker.yml
  5. Várjon egy új buildet, és figyelje meg, ahogy létrehoz és leküld egy Docker-rendszerképet a beállításjegyzékbe, valamint 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 bekapcsolva Ügynök, DeploymentGroup
Követelmények Egyik sem
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ármely
Változók beállítása Bármely
Ügynök verziója 2.0.0 vagy újabb
Tevékenységkategória Teszt