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ődikTEST-
. 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.xml
vagy TEST3.xml
nevű TEST1.xml
fá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 true
a , 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.
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:
- .NET-keretrendszer 4.6.2-es vagy újabb verziója
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
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.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
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)
Küldje le a módosítást az adattár fő ágára.
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.
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
- Ügynökkészlet:
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 |