Laporan pengujian

Setiap opsi laporan memerlukan paket ekstensi bernama di bagiannya. Tambahkan paket secara langsung, atau gunakan konfigurasi atau profil SDK pengujian yang menyertakannya. Ekstensi laporan bukan bagian dari inti MTP, sehingga opsi seperti --report-trx tidak dikenali ketika aplikasi pengujian tidak mendaftarkan ekstensinya. Jalankan aplikasi pengujian dengan --help, atau jalankan dotnet test --help dalam mode MTP, untuk mengonfirmasi bahwa opsi tersedia.

Petunjuk / Saran

Saat menggunakan Microsoft.Testing.Platform.MSBuild (disertakan secara transitif oleh runner MSTest, NUnit, dan xUnit), ekstensi ini didaftarkan secara otomatis saat Anda menginstal paket NuGet mereka — tidak ada perubahan kode yang diperlukan. Pendaftaran manual yang ditentukan dalam artikel ini hanya diperlukan jika Anda menonaktifkan titik masuk yang dihasilkan secara otomatis dengan mengatur <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>.

Nama berkas laporan

Setiap ekstensi laporan menulis filenya ke direktori hasil pengujian, yang dapat Anda atur dengan --results-directory opsi . Untuk mengganti nama, gunakan opsi --report-*-filename yang sesuai. Setiap bagian laporan mencantumkan nama default untuk laporan tersebut.

Nama file dapat menyertakan jalur relatif yang tetap berada dalam direktori hasil pengujian, dan dapat menggunakan item pengganti berikut (tempat penampung):

Tempat penampung Deskripsi
{asm} Nama rakitan entri, atau unknown ketika tidak tersedia.
{tfm} Moniker kerangka kerja target terdeteksi saat runtime, seperti net9.0.
{arch} Arsitektur proses, seperti x64, x86, atau arm64.
{pname} Nama Proses.
{pid} ID Proses.
{time} Tanda waktu presisi tinggi.

Misalnya, --report-trx-filename "{asm}_{tfm}_{arch}.trx" menampilkan kembali nama TRX bawaan.

Jika nama file TRX, HTML, atau JUnit bawaan atau yang ditentukan secara eksplisit sudah ada untuk sumber uji, ekstensi akan memberikan peringatan dan menimpa file tersebut. Mulai dari pratinjau MTP 2.4, CTRF menerapkan perilaku yang sama. Untuk mempertahankan riwayat laporan, sertakan {time}.

Nota

Nama placeholder peka terhadap huruf besar/kecil dan menggunakan huruf kecil. Dukungan placeholder untuk nama file laporan tersedia di MTP mulai versi 2.3.0.

Melaporkan konsolidasi

Mulai MTP 2.4.0, MTP secara otomatis melakukan pemrosesan pasca pada artefak laporan setelah pemanggilan dotnet test menjalankan beberapa modul pengujian atau setelah dukungan percobaan ulang melakukan beberapa percobaan. Fitur ini bersifat eksperimental dalam MTP 2.4.0.

Ekstensi TRX, JUnit, CTRF, dan HTML mengelompokkan artefak yang kompatibel berdasarkan jenis laporan dan membuat laporan terkonsolidasi ke subdirektori merged di direktori hasil pengujian. Konsolidasi CTRF menggabungkan hasil modul dan meringkas percobaan ulang ke dalam hasil uji akhir beserta riwayat percobaan ulang. Konsolidasi HTML membuat ringkasan gabungan dan mempertahankan laporan asli per proses.

Untuk ekstensi laporan kustom, API eksperimental IArtifactPostProcessor mengekspos mode terpisah TestModules dan RetryAttempts pemrosesan. Untuk informasi selengkapnya, lihat EkstensiIArtifactPostProcessor.

Visual Studio laporan pengujian (TRX)

File hasil pengujian Visual Studio (atau TRX) adalah format default untuk menerbitkan hasil pengujian. Ekstensi ini memerlukan paket NuGet Microsoft.Testing.Extensions.TrxReport .

Pendaftaran manual

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddTrxReportProvider();

Nota

Saat menggunakan pendaftaran manual, pastikan untuk terakhir mendaftarkan penyedia laporan TRX. Implementasi saat ini tergantung pada urutan pendaftaran, jadi mendaftarkannya setelah semua ekstensi lain memastikannya menangkap semua data pengujian.

Nota

Tersedia di MTP yang dimulai dengan versi 1.9.0, laporan TRX menyertakan bidang pengujian Description .

Nota

Tersedia di MTP mulai versi 2.3.0, hasil TRX ditulis ke disk secara bertahap seiring eksekusi berlangsung. Jika host pengujian crash, file TRX menyimpan hasil yang dikumpulkan sebelum crash.

Mulai dari pratinjau MTP 2.4, TRX yang dihasilkan oleh MTP mempertahankan metadata MSTest [WorkItem] dan [GitHubWorkItem].

Opsi

Option Deskripsi
--report-trx Menghasilkan laporan TRX.
--report-trx-filename Nama laporan TRX yang dihasilkan. Dimulai dengan MTP 2.3.0, defaultnya adalah bentuk deterministik {asm}_{tfm}_{arch}.trx ; sebelum MTP 2.3.0, defaultnya adalah <UserName>_<MachineName>_<yyyy-MM-dd_HH_mm_ss.fffffff>.trx. Untuk mengkustomisasi nama, lihat Melaporkan nama file.

Laporan disimpan di dalam folder TestResults default yang dapat ditentukan melalui argumen baris perintah --results-directory.

Laporan HTML

Laporan HTML membuat file HTML interaktif dan mandiri untuk sesi pengujian. Ekstensi ini memerlukan paket NuGet Microsoft.Testing.Extensions.HtmlReport.

Nota

Tersedia di MTP yang dimulai dengan versi 2.3.0. Ekstensi ini bersifat eksperimental, dan opsi dan format outputnya mungkin berubah dalam versi yang akan datang.

Pendaftaran manual

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddHtmlReportProvider();

Opsi

Option Deskripsi
--report-html Menghasilkan laporan HTML.
--report-html-filename Nama laporan HTML yang dihasilkan. Nilai harus diakhir dengan .html. Defaultnya adalah {asm}_{tfm}_{arch}.html. Untuk mengkustomisasi nama, lihat Melaporkan nama file. Membutuhkan --report-html.

Laporan JUnit

Laporan JUnit membuat file XML yang kompatibel dengan JUnit untuk sesi pengujian. Ekstensi ini memerlukan paket NuGet Microsoft.Testing.Extensions.JUnitReport.

Nota

Tersedia di MTP yang dimulai dengan versi 2.3.0. Ekstensi ini bersifat eksperimental, dan opsi dan format outputnya mungkin berubah dalam versi yang akan datang.

Dimulai dengan MSTest.Sdk 4.3, aktifkan ekstensi ini dengan <EnableMicrosoftTestingExtensionsJUnitReport>true</EnableMicrosoftTestingExtensionsJUnitReport>. Ekstensi ini bukan bagian Default dari profil MSTest.Sdk atau AllMicrosoft .

Pendaftaran manual

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddJUnitReportProvider();

Opsi

Option Deskripsi
--report-junit Menghasilkan laporan XML JUnit.
--report-junit-filename Nama laporan XML JUnit yang dihasilkan. Nilai harus diakhir dengan .xml. Defaultnya adalah {asm}_{tfm}_{arch}.xml. Untuk mengkustomisasi nama, lihat Melaporkan nama file. Membutuhkan --report-junit.

Laporan CTRF

Laporan CTRF membuat file JSON yang menggunakan Format Laporan Pengujian Umum untuk sesi pengujian. Ekstensi ini memerlukan paket NuGet Microsoft.Testing.Extensions.CtrfReport.

Nota

Tersedia di MTP yang dimulai dengan versi 2.3.0. Ekstensi ini bersifat eksperimental, dan opsi dan format outputnya mungkin berubah dalam versi yang akan datang.

Pendaftaran manual

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddCtrfReportProvider();

Opsi

Option Deskripsi
--report-ctrf Menghasilkan laporan JSON CTRF.
--report-ctrf-filename Nama laporan CTRF JSON yang dihasilkan. Nilai harus diakhir dengan .json. Defaultnya adalah <UserName>_<MachineName>_<assembly>_<tfm>_<timestamp>.ctrf.json. Untuk mengkustomisasi nama, lihat Melaporkan nama file. Membutuhkan --report-ctrf.

Dimulai dengan pratinjau MTP 2.4, CTRF mempertahankan setiap hasil ketika beberapa pengujian menggunakan UID yang sama. Ini juga mencakup lampiran untuk setiap pengujian dan percobaan sebelumnya serta menentukan tipe MIME-nya dari nama file.

Untuk pengujian yang diulang, CTRF hanya mengaitkan upaya jika hubungannya jelas. Ini kemudian mencatat upaya sebelumnya dalam retryAttempts, menetapkan retries, dan menandai hasil sukses yang muncul kemudian sebagai flaky: true. Hasil same-UID yang ambigu tetap terpisah agar laporan tidak mengaitkan diagnostik dengan pengujian yang keliru.

Ringkasan terminal menunjukkan pengujian yang tidak stabil dan yang dijalankan ulang. Laporan TRX dan JUnit menyimpan satu hasil akhir per pengujian alih-alih merekam setiap upaya.

laporan Azure DevOps

Azure DevOps plugin pelaporan meningkatkan pelaksanaan uji untuk pengembang yang menghosting kode mereka di GitHub, tetapi menggunakan agen pembangun di Azure DevOps. Ini menambahkan informasi tambahan ke kegagalan untuk menunjukkan kegagalan langsung di GitHub PR.

anotasi Error dalam tampilan file PR GitHub

Ekstensi ini memerlukan paket NuGet Microsoft.Testing.Extensions.AzureDevOpsReport .

Pendaftaran manual

var builder = await TestApplication.CreateBuilderAsync(args);
builder.TestHost.AddAzureDevOpsProvider();

Opsi

Option Versi MTP Deskripsi
--report-azdo 1.9.0 Mengaktifkan generator laporan Azure DevOps. Kesalahan dan peringatan ditulis ke output dalam format yang Azure DevOps pahami.
--report-azdo-severity 1.9.0 Tingkat keparahan yang digunakan untuk peristiwa yang dilaporkan. Nilai yang valid adalah error (default) dan warning.
--report-azdo-groups 2.4.0 Mengaktifkan atau menonaktifkan kelompok log untuk setiap rakitan. Saat diaktifkan, output setiap assembly pengujian akan muncul dalam bagian log Azure Pipelines yang dapat diciutkan. Nilai yang berlaku adalah on atau off. Build pratinjau MTP 2.4.0 secara default menggunakan on; rilis stabil MTP 2.4.0 secara default menggunakan off. Membutuhkan --report-azdo.
--report-azdo-annotations 2.4.0 Mengaktifkan atau menonaktifkan anotasi untuk pengujian yang gagal dan dilewati. Nilai yang valid adalah on (default) dan off. Membutuhkan --report-azdo.
--report-azdo-flaky-history 2.3.0 Membuat kueri terhadap riwayat hasil pengujian Azure DevOps untuk N hari terakhir (1–90) dan menganotasi kegagalan yang dilaporkan dengan konteks ketidakstabilan pengujian. Membutuhkan --report-azdo.
--report-azdo-demote-known-flaky 2.3.0 Menurunkan status kegagalan yang cukup tidak stabil dalam jendela riwayat Azure DevOps (ambang batas default adalah 25%) dari error menjadi peringatan. Memerlukan --report-azdo dan --report-azdo-flaky-history.
--report-azdo-quarantine-file 2.3.0 Jalur ke file teks yang mencantumkan nama atau pola glob yang sepenuhnya memenuhi syarat pengujian yang dikarantina. Kegagalan pencocokan dilaporkan sebagai peringatan. Membutuhkan --report-azdo.
--report-azdo-summary 2.3.0 Menulis ringkasan pekerjaan Markdown di akhir eksekusi pengujian dan mengunggahnya melalui ##vso[task.uploadsummary]. Argumen opsional berupa jalur file menggantikan lokasi default ({testResultsDir}/azdo-summary-{tfm}.md). Membutuhkan --report-azdo.
--report-azdo-stackframe-filter 2.3.0 Menambahkan pola regex yang dicocokkan dengan awalan tipe yang memenuhi syarat secara lengkap dari setiap frame stack, yang akan dilewati saat ekstensi menemukan lokasi pemanggilan pengguna untuk diberi anotasi. Opsi ini dapat diulang, hingga 16 pola, dan setiap pola dikompilasi dengan batas waktu pertandingan 500 ms. Pola-pola ini bersifat aditif pada awalan implementasi pernyataan MSTest bawaan ekstensi. Membutuhkan --report-azdo.
--report-azdo-upload-artifacts 2.3.0 Mengunggah file hasil pengujian dan/atau menambahkan tag build ke Azure DevOps. Nilai yang valid adalah off (default), tags-only, files, dan all.
--report-azdo-upload-artifact-include 2.3.0 Menyertakan file dalam unggahan artefak Azure DevOps menggunakan pola glob relatif terhadap direktori hasil pengujian. Secara default menjadi **/*. --report-azdo-upload-artifacts Harus berupa nilai selain off.
--report-azdo-upload-artifact-exclude 2.3.0 Mengecualikan file dari pengunggahan artefak Azure DevOps menggunakan pola glob relatif terhadap direktori hasil pengujian. --report-azdo-upload-artifacts Harus berupa nilai selain off.
--report-azdo-upload-artifact-name 2.3.0 Mengambil alih nama kontainer artefak Azure DevOps. Secara default menjadi TestResults_{assemblyName}_{tfm}. --report-azdo-upload-artifacts Harus berupa nilai selain off.
--publish-azdo-test-results 2.3.0 Mengirim hasil secara bertahap ke eksekusi pengujian Azure DevOps seiring setiap pengujian selesai. Tab Pengujian pada build menampilkan eksekusi yang telah selesai.
--publish-azdo-run-name 2.3.0 Mengatur nama uji coba Azure DevOps kustom untuk penerbitan hasil pengujian langsung. Membutuhkan --publish-azdo-test-results.

Peringatan

Jangan aktifkan grup saat beberapa rakitan pengujian berjalan secara paralel. Azure DevOps ##[group] dan ##[endgroup] perintah pemformatan bersifat berurutan dan anonim. Output perakitan yang berlangsung secara bersamaan dapat saling tersisip, menyebabkan penyarangan grup yang keliru, dan menempatkan baris di bawah rakitan yang salah. Jika Anda menggunakan build pratinjau MTP 2.4.0, teruskan --report-azdo-groups off untuk menonaktifkan grup. Rilis MTP 2.4.0 yang stabil menonaktifkan grup secara default. Berikan --report-azdo-groups on hanya untuk satu assembly atau eksekusi assembly yang diserialkan.

Nota

Kolom versi MTP mencantumkan versi MTP pertama yang berisi setiap opsi. Ekstensi Azure DevOps itu sendiri menjadi stabil di MTP 1.9.0 dengan --report-azdo dan --report-azdo-severity; opsi yang tersisa ditambahkan dalam MTP 2.3.0 atau 2.4.0.

Ekstensi secara otomatis mendeteksi bahwa ekstensi berjalan di lingkungan integrasi berkelanjutan (CI) dengan memeriksa TF_BUILD variabel lingkungan.

Dimulai dengan MTP 2.4.0, Azure DevOps Markdown meringkas hasil agregat di setiap modul pengujian dalam dotnet test pemanggilan. Saat Anda juga mengaktifkan cakupan kode, ringkasan tersebut mencakup jumlah yang tercakup dan jumlah total, persentase, hasil nilai ambang, serta indikator jika data cakupan hanya sebagian.

Dalam pratinjau MTP 2.4, publikasi langsung secara otomatis mengunggah lampiran berkas untuk hasil yang gagal ke hasil pengujian Azure DevOps. Hasil yang tidak berhasil mencakup hasil gagal, mengalami kesalahan, melewati batas waktu, dan dibatalkan.

Ketika suatu hasil menghasilkan output standar atau error standar, ekstensi dapat melampirkan hingga 256 KiB untuk setiap aliran inline. Setiap lampiran berbasis file memiliki batas 16 MiB.

Ekstensi ini juga mengunggah file .coverage, .cobertura.xml, dan .opencover.xml tingkat proses sebagai lampiran cakupan kode. Lampiran uji coba dan hasil ini terpisah dari --report-azdo-upload-artifacts, yang mengunggah file yang dipilih sebagai artefak build Azure Pipelines.

Untuk pengujian yang diulang, Azure DevOps mempublikasikan percobaan sebelumnya sebagai subhasil dan melampirkan artefak setiap percobaan ke subhasil yang menghasilkannya. Jika korelasi coba lagi yang aman tidak tersedia, ekstensi menerbitkan hasil terpisah alih-alih menghilangkannya.

Saat publikasi langsung membuat proses eksekusi, sistem akan menampilkan URL eksekusi sehingga Anda dapat memantau hasilnya sebelum proses selesai. Ini juga mengirim pipelineReference dan tanggal mulai ketika lingkungan alur menyediakannya. Tab Pengujian build tidak menampilkan run yang sedang berlangsung; tab ini baru menampilkan run setelah selesai.

laporan GitHub Actions

Laporan GitHub Actions menghasilkan perintah alur kerja bawaan GitHub Actions sehingga eksekusi pengujian memberikan pengalaman yang optimal di runner: grup log per assembly, anotasi pengujian yang gagal dan yang dilewati (ditampilkan di tab alur kerja Annotations dan, saat lokasi sumber berhasil ditentukan, pada diff Files changed di pull request), ringkasan job dalam Markdown yang ditambahkan ke file yang dirujuk oleh GITHUB_STEP_SUMMARY, dan notifikasi pengujian lambat.

Ekstensi ini memerlukan paket NuGet Microsoft.Testing.Extensions.GitHubActionsReport.

Ekstensi diaktifkan hanya ketika proses dijalankan di GitHub Actions (variabel lingkungan GITHUB_ACTIONS bernilai true) dan opsi --report-gh diaktifkan; jika tidak, ekstensi tidak melakukan apa pun. Saat aktif, setiap fitur diaktifkan secara default dan dapat dinonaktifkan satu per satu dengan opsinya --report-gh-* .

Important

Opsi --report-gh milik Microsoft.Testing.Extensions.GitHubActionsReport. Paket GitHubActionsTestLogger menyediakan opsi yang berbeda, --report-github. Opsinya bukan alias dan hanya berfungsi saat proyek pengujian mendaftarkan paket yang memiliki opsi .

Nota

Ekstensi ini tersedia dimulai dengan MTP 2.3.0. Dimulai dengan MTP 2.4.0, titik masuk publiknya tidak lagi eksperimental.

Pendaftaran manual

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddGitHubActionsProvider();

Opsi

Option Versi MTP Deskripsi
--report-gh 2.3.0 Mengaktifkan generator laporan GitHub Actions agar pengujian menghasilkan perintah workflow. Mengharuskan eksekusi dijalankan di GitHub Actions.
--report-gh-groups 2.3.0 Mengaktifkan atau menonaktifkan kelompok log untuk setiap rakitan. Nilai yang valid adalah on (default) dan off. Membutuhkan --report-gh.
--report-gh-annotations 2.3.0 Mengaktifkan atau menonaktifkan anotasi untuk pengujian yang gagal dan dilewati. Nilai yang valid adalah on (default) dan off. Membutuhkan --report-gh.
--report-gh-step-summary 2.3.0 Menentukan apakah ekstensi menulis ringkasan tugas dalam format Markdown ke file yang direferensikan oleh GITHUB_STEP_SUMMARY. Nilai yang valid adalah on (default), off, dan, dimulai dengan MTP 2.4.0, on-failure. Membutuhkan --report-gh.
--report-gh-step-summary-sections 2.4.0 Memilih konten ringkasan. Nilai yang valid adalah test-results, , slow-testscoverage, dan all (default). Memerlukan --report-gh dan mode ringkasan selain off.
--report-gh-failure-details 2.4.0 Mengaktifkan atau menonaktifkan detail kegagalan terbatas dalam ringkasan pekerjaan. Gunakan on (default) atau off. Detailnya termasuk pesan, jenis pengecualian, lokasi sumber, dan pelacakan tumpukan jika tersedia. Membutuhkan --report-gh.
--report-gh-history 2.4.0 Membaca dan memperbarui rekam jepret riwayat pengujian lokal terikat di jalur file yang ditentukan. Alur kerja harus mengunduh rekam jepret sebelumnya sebelum menjalankan dan mengunggah file yang diperbarui setelahnya. Membutuhkan --report-gh.
--report-gh-history-window 2.4.0 Mengatur jangka waktu penyimpanan riwayat dari 1 hingga 90 hari. Defaultnya adalah 30 hari. Membutuhkan --report-gh-history.
--report-gh-slow-test-notices 2.3.0 Mengaktifkan atau menonaktifkan pemberitahuan pengujian lambat. Nilai yang valid adalah on (default) dan off. Membutuhkan --report-gh.
--report-gh-slow-test-threshold 2.3.0 Lama waktu pengujian dapat berlangsung sebelum notifikasi pengujian lambat ditampilkan. Menerima jumlah detik kosong atau nilai dengan akhiran unit seperti 90s, , 2matau 1.5h. Defaultnya adalah 60s. Membutuhkan --report-gh.

Dimulai dengan MTP 2.4.0, GitHub Actions Markdown meringkas hasil agregat di setiap modul pengujian dalam dotnet test pemanggilan. Saat Anda juga mengaktifkan cakupan kode, pilih coverage atau all untuk menyertakan jumlah tercakup dan total, persentase, hasil ambang batas, dan indikator saat data cakupan parsial.

Detail kegagalan tetap dalam pesan terikat, tumpukan, jumlah kegagalan, dan anggaran ringkasan keseluruhan. Ketika konten melebihi batas, laporan memangkas atau meringkasnya dan menyatakan pengurangan tersebut dalam ringkasan.