PublishTestResults@2 - Menerbitkan tugas Hasil Pengujian v2
Menerbitkan hasil pengujian ke Azure Pipelines.
Terbitkan Hasil Pengujian ke Azure Pipelines/TFS.
Sintaks
# 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.
Input
testResultsFormat
- Format hasil pengujian
Alias input: testRunner
. string
. Wajib diisi. Nilai yang diizinkan: JUnit
, NUnit
, VSTest
, XUnit
, CTest
. Nilai default: JUnit
.
Menentukan format file hasil yang ingin Anda terbitkan. Format berikut didukung: CTest, JUnit, NUnit 2, NUnit 3, Visual Studio Test (TRX) dan xUnit 2.
testResultsFormat
- Format hasil pengujian
Alias input: testRunner
. string
. Wajib diisi. Nilai yang diizinkan: JUnit
, NUnit
, VSTest
, XUnit
. Nilai default: JUnit
.
Menentukan format file hasil yang ingin Anda terbitkan. Format berikut didukung: CTest, JUnit, NUnit 2, NUnit 3, Visual Studio Test (TRX) dan xUnit 2.
testResultsFiles
- File hasil pengujian
string
. Wajib diisi. Nilai default: **/TEST-*.xml
.
Menentukan satu atau beberapa file hasil pengujian.
- Anda dapat menggunakan kartubebas folder tunggal (
*
) dan kartubebas rekursif (**
). Misalnya,**/TEST-*.xml
mencari semua file XML yang namanya dimulai denganTEST-
di semua subdirektori. Jika menggunakan VSTest sebagai format hasil pengujian, jenis file harus diubah menjadi.trx
misalnya**/TEST-*.trx
- Beberapa jalur dapat ditentukan, dipisahkan oleh baris baru.
- Selain itu menerima pola minimatch.
Misalnya, !TEST[1-3].xml
mengecualikan file bernama TEST1.xml
, , TEST2.xml
atau TEST3.xml
.
searchFolder
- folder Search
string
. Nilai default: $(System.DefaultWorkingDirectory)
.
Pilihan. Menentukan folder untuk mencari file hasil pengujian.
mergeTestResults
- Menggabungkan hasil pengujian
boolean
. Nilai default: false
.
Ketika nilai boolean ini adalah true
, tugas melaporkan hasil pengujian dari semua file terhadap satu eksekusi pengujian. Jika nilainya adalah false
, tugas membuat uji coba terpisah untuk setiap file hasil pengujian.
Catatan
Gunakan pengaturan hasil pengujian penggabungan untuk menggabungkan file dari kerangka kerja pengujian yang sama untuk memastikan pemetaan hasil dan durasi dihitung dengan benar.
failTaskOnFailedTests
- Gagal jika ada kegagalan pengujian
boolean
. Nilai default: false
.
Opsional. Ketika nilai boolean ini adalah true
, tugas akan gagal jika salah satu pengujian dalam file hasil ditandai sebagai gagal. Defaultnya adalah false
, yang hanya akan menerbitkan hasil dari file hasil.
failTaskOnFailureToPublishResults
- Gagal jika ada kegagalan dalam menerbitkan hasil pengujian
boolean
. Nilai default: false
.
Ketika true
, gagal tugas jika ada kegagalan dalam menerbitkan hasil pengujian.
failTaskOnMissingResultsFile
- Gagal jika tidak ada file hasil yang ditemukan
boolean
. Nilai default: false
.
Gagalkan tugas jika tidak ada file hasil yang ditemukan.
testRunTitle
- Judul uji coba
string
.
Pilihan. Menentukan nama untuk uji coba yang akan dilaporkan hasilnya. Nama variabel yang dideklarasikan dalam alur build atau rilis dapat digunakan.
buildPlatform
- Bangun Platform
Alias input: platform
. string
.
Pilihan. Menentukan platform build tempat uji coba harus dilaporkan. Contohnya: x64
atau x86
. Jika Anda menentukan variabel untuk platform dalam tugas build Anda, gunakan di sini.
buildConfiguration
- Konfigurasi Build
Alias input: configuration
. string
.
Pilihan. Menentukan konfigurasi build tempat uji coba harus dilaporkan. Contohnya: Debug
atau Release
. Jika Anda menentukan variabel untuk konfigurasi dalam tugas build Anda, gunakan di sini.
publishRunAttachments
- Mengunggah file hasil pengujian
boolean
. Nilai default: true
.
Pilihan. Ketika nilai boolean ini adalah true
, tugas mengunggah semua file hasil pengujian sebagai lampiran ke eksekusi pengujian.
Opsi kontrol tugas
Semua tugas memiliki opsi kontrol selain input tugas mereka. Untuk informasi selengkapnya, lihat Opsi kontrol dan properti tugas umum.
Variabel output
Tidak ada.
Keterangan
Tugas ini menerbitkan hasil pengujian ke Azure Pipelines atau TFS saat pengujian dijalankan untuk memberikan pengalaman pelaporan dan analitik pengujian yang komprehensif. Anda dapat menggunakan runner pengujian pilihan Anda yang mendukung format hasil yang Anda butuhkan. Format hasil yang didukung termasuk CTest, JUnit (termasuk PHPUnit), NUnit 2, NUnit 3, Visual Studio Test (TRX), dan xUnit 2.
Tugas bawaan lainnya, seperti tugas Visual Studio Test dan tugas Dot NetCore CLI secara otomatis menerbitkan hasil pengujian ke alur. Tugas seperti Ant, Maven, Gulp, Grunt, dan Xcode menyediakan hasil penerbitan sebagai opsi dalam tugas, atau membangun pustaka seperti Cobertura dan JaCoCo. Jika Anda menggunakan salah satu tugas ini, Anda tidak memerlukan tugas Terbitkan Hasil Pengujian terpisah di alur.
Hasil pengujian yang diterbitkan ditampilkan di tab Pengujian di ringkasan alur. Hasilnya membantu Anda mengukur kualitas alur, meninjau keterlacakan, memecahkan masalah kegagalan, dan mendorong kepemilikan kegagalan.
Contoh berikut menunjukkan tugas dikonfigurasi untuk menerbitkan hasil pengujian.
Anda juga dapat menggunakan tugas ini dalam alur build untuk menerbitkan hasil cakupan kode yang dihasilkan saat menjalankan pengujian ke Azure Pipelines atau TFS untuk mendapatkan pelaporan cakupan.
Prasyarat
Jika Anda menggunakan agen yang dihost sendiri Windows, komputer Anda harus menginstal prasyarat ini:
- .NET Framework 4.6.2 atau versi yang lebih baru
Default tugas
Opsi default menggunakan format JUnit untuk menerbitkan hasil pengujian. Saat menggunakan VSTest sebagai testRunner, opsi testResultsFiles harus diubah menjadi **/TEST-*.trx
.
testResultsFormat adalah alias untuk nama input testRunner . File hasil dapat diproduksi oleh beberapa runner, bukan hanya runner tertentu. Misalnya, format hasil jUnit didukung oleh banyak runner dan bukan hanya jUnit.
Untuk menerbitkan hasil pengujian untuk Python menggunakan YAML, lihat Python di bagian Ekosistem dari topik ini, yang juga menyertakan contoh untuk bahasa lain.
Pemetaan format hasil
Tabel ini mencantumkan bidang yang dilaporkan di tab Pengujian dalam ringkasan build atau rilis, dan pemetaan terkait dengan atribut dalam format hasil pengujian yang didukung.
Cakupan | Bidang | Uji Visual Studio (TRX) |
---|---|---|
Uji coba | Judul | Judul uji coba yang ditentukan dalam tugas |
Tanggal dimulai | /TestRun/Times.Attributes["start"]. Nilai | |
Tanggal selesai | /TestRun/Times.Attributes["finish"]. Nilai | |
Durasi | Tanggal selesai - Tanggal dimulai | |
Lampiran | Lihat bagian dukungan Lampiran di bawah ini | |
Hasil pengujian | Judul | /TestRun/Results/UnitTestResult.Attributes["testName"]. Nilai Atau /TestRun/Results/WebTestResult.Attributes["testName"]. Nilai Atau /TestRun/Results/TestResultAggregation.Attributes["testName"]. Nilai |
Tanggal dimulai | /TestRun/Results/UnitTestResult.Attributes["startTime"]. Nilai Atau /TestRun/Results/WebTestResult.Attributes["startTime"]. Nilai Atau /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Nilai | |
Tanggal selesai | /TestRun/Results/UnitTestResult.Attributes["startTime"]. Nilai + /TestRun/Results/UnitTestResult.Attributes["duration"]. Nilai Atau /TestRun/Results/WebTestResult.Attributes["startTime"]. Nilai + /TestRun/Results/WebTestResult.Attributes["duration"]. Nilai Atau /TestRun/Results/TestResultAggregation.Attributes["startTime"]. Nilai + /TestRun/Results/TestResultAggregation.Attributes["duration"]. Nilai | |
Durasi | /TestRun/Results/UnitTestResult.Attributes["duration"]. Nilai Atau /TestRun/Results/WebTestResult.Attributes["duration"]. Nilai Atau /TestRun/Results/TestResultAggregation.Attributes["duration"]. Nilai | |
Pemilik | /TestRun/TestDefinitions/UnitTest/Owners/Owner.Attributes["name"]. Nilai | |
Hasil | /TestRun/Results/UnitTestResult.Attributes["outcome"]. Nilai Atau /TestRun/Results/WebTestResult.Attributes["outcome"]. Nilai Atau /TestRun/Results/TestResultAggregation.Attributes["outcome"]. Nilai | |
Pesan kesalahan | /TestRun/Results/UnitTestResult/Output/ErrorInfo/Message.InnerText Or /testRun/Results/WebTestResultOutput/ErrorInfo/Message.InnerText Or /TestRun/Results/TestResultAggregation/Output/ErrorInfo/Message.InnerText | |
Pelacakan tumpukan | /TestRun/Results/UnitTestResult/Output/ErrorInfo/StackTrace.InnerText Or /TestRun/Results/WebTestResultOutput/ErrorInfo/StackTrace.InnerText Or /TestRun/Results/TestResultAggregation/Output/ErrorInfo/StackTrace.InnerText | |
Lampiran | Lihat bagian dukungan Lampiran di bawah ini | |
Log konsol | /TestRun/Results/UnitTestResult/Output/StdOut.InnerText Atau /TestRun/Results/WebTestResultOutput/Output/StdOut.InnerText Or /TestRun/Results/TestResultAggregation/Output/StdOut.InnerText | |
Log kesalahan konsol | /TestRun/Results/UnitTestResult/Output/StdErr.InnerText Atau /TestRun/Results/WebTestResultOutput/Output/StdErr.InnerText Or /TestRun/Results/TestResultAggregation/Output/StdErr.InnerText | |
Nama agen | /TestRun/Results/UnitTestResult.Attributes["computerName"]. Nilai Atau /TestRun/Results/WebTestResult.Attributes["computerName"]. Nilai Atau /TestRun/Results/TestResultAggregation.Attributes["computerName"]. Nilai | |
File pengujian | /TestRun/TestDefinitions/UnitTest.Attributes["storage"]. Nilai | |
Prioritas | /TestRun/TestDefinitions/UnitTest.Attributes["priority"]. Nilai |
Catatan
Durasi hanya digunakan saat Tanggal dimulai dan Tanggal selesai tidak tersedia.
Format nama yang sepenuhnya memenuhi syarat untuk testName adalah Namespace.Testclass.Methodname dengan batas karakter 512. Jika pengujian didorong data dan memiliki parameter, batas karakter akan menyertakan parameter.
Saat menerbitkan hasil pengujian, Anda mungkin mendapatkan kesalahan ini: Gagal menerbitkan hasil pengujian: Prioritas Tidak Valid yang ditentukan
Kesalahan ini terjadi jika salah satu metode pengujian memiliki prioritas yang ditetapkan di atas 255, perbaiki prioritas metode pengujian dalam kode dan jalankan pengujian lagi. Anda dapat meninjau file trx yang dihasilkan untuk melihat semua pengujian yang memiliki prioritas lebih besar dari 255.
Dukungan lampiran
Tugas Terbitkan Hasil Pengujian menyediakan dukungan untuk lampiran untuk uji coba dan hasil pengujian untuk format berikut. Untuk proyek publik, kami mendukung 2GB dari total lampiran.
Pengujian Visual Studio (TRX)
Cakupan | Jenis | Jalur |
---|---|---|
Uji coba | Pengumpul Data | /TestRun/ResultSummary/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Nilai |
Hasil Uji | /TestRun/ResultSummary/ResultFiles/ResultFile.Attributes["path"]. Nilai | |
Cakupan Kode | /TestRun/TestSettings/Execution/AgentRule/DataCollectors/DataCollector/Configuration/CodeCoverage/Regular/CodeCoverageItem.Attributes["binaryFile"]. Nilai Dan /TestRun/TestSettings/Execution/AgentRule/DataCollectors/DataCollector/Configuration/CodeCoverage/Regular/CodeCoverageItem.Attributes["pdbFile"]. Nilai | |
Hasil pengujian | Pengumpul Data | /TestRun/Results/UnitTestResult/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Nilai Atau /TestRun/Results/WebTestResult/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Nilai Atau /TestRun/Results/TestResultAggregation/CollectorDataEntries/Collector/UriAttachments/UriAttachment/A.Attributes["href"]. Nilai |
Hasil Uji | /TestRun/Results/UnitTestResult/ResultFiles/ResultFile.Attributes["path"]. Nilai Atau /TestRun/Results/WebTestResult/ResultFiles/ResultFile.Attributes["path"]. Nilai Atau /TestRun/Results/TestResultAggregation/ResultFiles/ResultFile.Attributes["path"]. Nilai |
Catatan
Opsi untuk mengunggah file hasil pengujian sebagai lampiran adalah opsi default dalam tugas, berlaku untuk semua format.
Contoh
Docker
Untuk aplikasi berbasis Docker, ada banyak cara untuk membangun aplikasi Anda dan menjalankan pengujian:
- Membangun dan menguji dalam alur build: build dan pengujian yang dijalankan dalam alur dan hasil pengujian diterbitkan menggunakan tugas Terbitkan Hasil Pengujian .
- Membangun dan menguji dengan Dockerfile multi-tahap: build dan pengujian dijalankan di dalam kontainer menggunakan file Docker multi-tahap, karena hasil pengujian tersebut tidak diterbitkan kembali ke alur.
- Bangun, uji, dan terbitkan hasil dengan Dockerfile: build dan pengujian yang dijalankan di dalam kontainer, dan hasilnya diterbitkan kembali ke alur. Lihat contoh di bawah ini.
Membuat, menguji, dan menerbitkan hasil dengan file Docker
Dalam pendekatan ini, Anda membangun kode dan menjalankan pengujian di dalam kontainer menggunakan file Docker. Hasil pengujian kemudian disalin ke host untuk diterbitkan ke alur. Untuk menerbitkan hasil pengujian ke Azure Pipelines, Anda bisa menggunakan tugas Terbitkan Hasil Pengujian . Gambar akhir akan diterbitkan ke Docker atau Azure Container Registry.
Mendapatkan kode
Buat
Dockerfile.build
file di akar direktori proyek Anda dengan yang berikut ini:# 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
File ini berisi instruksi untuk membuat kode dan menjalankan pengujian. Pengujian kemudian disalin ke file
testresults.trx
di dalam kontainer.Untuk membuat gambar akhir sesecil mungkin, hanya berisi artefak runtime dan penyebaran, ganti konten yang ada
Dockerfile
dengan yang berikut ini:# 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"]
Menentukan alur build
Jika Anda memiliki akun Docker Hub, dan ingin mendorong gambar ke registri
.vsts-ci.docker.yml
Docker Anda, ganti konten file dengan yang berikut ini:# 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)
Atau, jika Anda mengonfigurasi Azure Container Registry dan ingin mendorong gambar ke registri tersebut
.vsts-ci.yml
, ganti konten file dengan yang berikut:# 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)
Dorong perubahan ke cabang utama di repositori Anda.
Jika Anda menggunakan Azure Container Registry, pastikan Anda telah membuat registri sebelumnya di portal Azure. Salin nama pengguna dan kata sandi admin yang diperlihatkan di bagian Kunci akses dari pengaturan registri di portal Azure.
Perbarui alur build Anda dengan yang berikut ini
- Kumpulan agen:
Hosted Ubuntu 1604
- dockerId: Atur nilai ke ID Docker Anda untuk DockerHub atau nama pengguna admin untuk Azure Container Registry.
- dockerPassword: Atur nilai ke kata sandi Anda untuk DockerHub atau kata sandi admin Azure Container Registry.
- Jalur file YAML:
/.vsts-ci.docker.yml
- Kumpulan agen:
Antrekan build baru dan watch membuat dan mendorong gambar Docker ke registri Anda dan hasil pengujian ke Azure DevOps.
Persyaratan
Persyaratan | Deskripsi |
---|---|
Jenis alur | YAML, Build klasik, Rilis klasik |
Berjalan pada | Agen, DeploymentGroup |
Permintaan | Tidak ada |
Kemampuan | Tugas ini tidak memenuhi tuntutan apa pun untuk tugas berikutnya dalam pekerjaan. |
Pembatasan perintah | Apa pun |
Variabel yang dapat diatur | Apa pun |
Versi agen | 2.0.0 atau lebih tinggi |
Kategori tugas | Uji |