uji dotnet dengan Microsoft.Testing.Platform (MTP)

Artikel ini berlaku untuk: ✔️ .NET 10 SDK dan versi yang lebih baru

Nama

dotnet test - .NET driver pengujian yang digunakan untuk menjalankan pengujian unit dengan MTP.

Sinopsis

dotnet test
    [<PROJECT_OR_TRAVERSAL_PATH>]
    [--project <PROJECT_PATH>]
    [--solution <SOLUTION_PATH>]
    [--test-modules <EXPRESSION>]
    [--root-directory <ROOT_PATH>]
    [--max-parallel-test-modules <NUMBER>]
    [--config-file <CONFIG_FILE>]
    [--results-directory <RESULTS_DIRECTORY>]
    [--results-directory-layout <flat|per-module>]
    [--diagnostic-output-directory <DIAGNOSTIC_OUTPUT_DIRECTORY>]
    [--minimum-expected-tests <NUMBER>]
    [--maximum-failed-tests <NUMBER>]
    [--timeout <DURATION>]
    [-e|--environment <NAME="VALUE">]
    [-a|--arch <ARCHITECTURE>]
    [--artifacts-path <ARTIFACTS_DIR>]
    [-c|--configuration <CONFIGURATION>]
    [-f|--framework <FRAMEWORK>]
    [--os <OS>]
    [-r|--runtime <RUNTIME_IDENTIFIER>]
    [--use-current-runtime|--ucr]
    [-v|--verbosity <LEVEL>]
    [--no-build]
    [--no-dependencies]
    [--no-restore]
    [--nologo|--no-logo|--no-banner]
    [--no-ansi]
    [--no-progress]
    [--no-artifact-post-processing]
    [--output <VERBOSITY_LEVEL>]
    [--show-test-results <OUTCOME>]
    [--list-tests [text|json]]
    [--no-launch-profile]
    [--no-launch-profile-arguments]
    [--device <DEVICE_ID>]
    [--list-devices]
    [--collect-test-map]
    [--affected-tests]
    [<args>...]

dotnet test -h|--help

Description

Dengan MTP, dotnet test beroperasi lebih cepat daripada dengan VSTest. Argumen terkait pengujian tidak lagi diperbaiki, karena terkait dengan ekstensi terdaftar dalam project pengujian. Selain itu, MTP mendukung filter globbing saat menjalankan pengujian. Untuk informasi selengkapnya, lihat MTP.

Important

Opsi khusus ekstensi tidak disertakan dalam MTP. Setiap aplikasi pengujian yang ditargetkan harus mendaftarkan ekstensi yang menyediakan opsi. Tambahkan paket NuGet ekstensi secara langsung, atau gunakan konfigurasi atau profil SDK pengujian yang menyertakan paket. Jika tidak, uji coba gagal dengan kode keluar 5 karena opsi tidak dikenali. Jalankan dotnet test --help untuk melihat opsi yang tersedia untuk aplikasi pengujian yang dipilih, dan lihat Opsi ekstensi berdasarkan skenario untuk menemukan paket untuk opsi.

Peringatan

Ketika MTP dipilih melalui global.json, dotnet test mengharapkan semua proyek pengujian untuk menggunakan MTP. Ini adalah kesalahan jika salah satu proyek pengujian menggunakan VSTest.

Persyaratan versi

Mode dotnet test MTP memerlukan .NET 10 SDK dan MTP 1.7 atau yang lebih baru. Opsi yang ditambahkan setelah .NET 10 memiliki persyaratan versi SDK individual di bagian berikut. Beberapa opsi juga memerlukan paket MTP yang lebih baru karena SDK mengoordinasikan eksekusi lengkap sementara setiap aplikasi pengujian menerapkan kemampuan yang sesuai.

Pemulihan implisit

Anda tidak harus menjalankan dotnet restore karena dijalankan secara implisit oleh semua perintah yang memerlukan terjadinya pemulihan, seperti dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish, dan dotnet pack. Untuk menonaktifkan pemulihan implisit, gunakan opsi --no-restore.

Perintah dotnet restore masih berguna dalam skenario tertentu di mana pemulihan secara eksplisit masuk akal, seperti build integrasi berkelanjutan di Azure DevOps Services atau dalam sistem build yang perlu dikontrol secara eksplisit ketika pemulihan terjadi.

Untuk informasi tentang cara mengelola umpan NuGet, lihat dotnet restore dokumentasi.

Important

Saat Anda menjalankan proyek atau solusi dengan --no-restore, simpan status proyek yang dihasilkan pemulihan di obj folder dan folder paket global yang cocok tersedia. Impor kerangka kerja pengujian dan paket platform mengatur properti MSBuild yang dotnet test menggunakan untuk mengidentifikasi aplikasi pengujian MTP. Opsi ini --no-build juga menyiratkan --no-restore. Jika lingkungan pengujian berisi aplikasi pengujian bawaan tetapi bukan status pemulihan proyek, gunakan --test-modules sebagai gantinya. Untuk informasi selengkapnya, lihat No test projects were found .

Opsi

Nota

Anda hanya dapat menggunakan salah satu opsi berikut pada satu waktu: --project, --solution, atau --test-modules. Opsi ini tidak dapat digabungkan. Selain itu, saat Anda menggunakan --test-modules, Anda tidak dapat menentukan --arch, , --configuration, --device--framework, --list-devices, --os--runtime, , atau --use-current-runtime. Opsi ini memerlukan evaluasi proyek atau tidak relevan untuk modul yang sudah dibuat.

  • PROJECT_OR_TRAVERSAL_PATH

    Menentukan proyek atau proyek traversal yang akan dijalankan. Dimulai dengan .NET 11 Pratinjau 7, dotnet test mendukung Microsoft.Build.Traversal proyek, seperti dirs.proj, dan secara rekursif menjalankan proyek pengujian yang dirujuk.

    Dimulai dengan .NET 12 Pratinjau 1, argumen juga dapat mengidentifikasi aplikasi pengujian MTP berbasis file C#. Aplikasi pengujian berbasis file tidak mendukung --device.

  • --project <PROJECT_PATH>

    Menentukan jalur file project yang akan dijalankan (nama folder atau jalur lengkap). Jika tidak ditentukan, defaultnya ke direktori saat ini.

  • --solution <SOLUTION_PATH>

    Menentukan jalur file solusi yang akan dijalankan (nama folder atau jalur lengkap). Jika tidak ditentukan, defaultnya ke direktori saat ini.

  • --test-modules <EXPRESSION>

    Memfilter modul pengujian menggunakan globbing file. Hanya pengujian milik modul pengujian yang dijalankan. Karena opsi ini tidak mengevaluasi proyek, gunakan untuk menjalankan aplikasi pengujian yang sudah dibuat saat status pemulihan proyek tidak tersedia. Dimulai dengan .NET 11 Pratinjau 6, awali pola dengan ! untuk mengecualikan modul yang cocok. Pisahkan beberapa pola dengan titik koma; spasi kosong di sekitar setiap pola diabaikan.

  • --root-directory <ROOT_PATH>

    Menentukan direktori akar opsi --test-modules. Ini hanya dapat digunakan dengan opsi --test-modules.

  • --max-parallel-test-modules <NUMBER>

    Menentukan jumlah maksimum modul pengujian yang dapat berjalan secara paralel. Defaultnya adalah Environment.ProcessorCount.

  • --config-file <CONFIG_FILE>

    Menentukan file konfigurasi yang akan digunakan untuk eksekusi pengujian. Jika jalur relatif disediakan, jalur tersebut dikonversi ke jalur absolut berdasarkan direktori saat ini. Untuk informasi selengkapnya tentang pengaturan file konfigurasi, lihat testconfig.json.

  • --results-directory <RESULTS_DIRECTORY>

    Menentukan direktori tempat hasil pengujian disimpan. Jika direktori tidak ada, direktori akan dibuat. Jika jalur relatif disediakan, jalur tersebut dikonversi ke jalur absolut berdasarkan direktori saat ini.

  • --results-directory-layout <flat|per-module>

    Menentukan bagaimana eksekusi multi-modul mengatur file di bawah direktori hasil. Defaultnya, flat, menulis semua hasil ke direktori yang sama. per-module menulis hasil setiap modul ke <project>/<target-framework>_<runtime-or-architecture>, yang mencegah laporan dengan nama file yang sama menimpa satu sama lain.

    Tersedia mulai dengan .NET 11 RC 1.

  • --diagnostic-output-directory <DIAGNOSTIC_OUTPUT_DIRECTORY>

    Menentukan direktori tempat output diagnostik disimpan. Jika direktori tidak ada, direktori akan dibuat. Jika jalur relatif disediakan, jalur tersebut dikonversi ke jalur absolut berdasarkan direktori saat ini.

  • --minimum-expected-tests <NUMBER>

    Menentukan jumlah tes minimum positif untuk seluruh eksekusi. Jika jumlah pengujian agregat kurang dari minimum yang ditentukan, uji coba gagal dengan kode keluar 9. Jumlah global mencakup pengujian yang dilewati. Untuk informasi selengkapnya tentang kode keluar, lihat Kode keluar MTP.

    Karena opsi ini muncul sebelum --, ini adalah opsi global (eksekusi keseluruhan). Untuk memerlukan minimal untuk setiap modul pengujian, teruskan opsi setelahnya -- sehingga diteruskan ke setiap modul pengujian. Untuk informasi selengkapnya, lihat Minimum seluruh proses dan per modul.

    Nota

    Minimum global memerlukan .NET 10 SDK (10.0.100) atau versi yang lebih baru.

  • --maximum-failed-tests <NUMBER>

    Menghentikan eksekusi lengkap setelah mencapai jumlah pengujian yang gagal, salah, kehabisan waktu, atau dibatalkan yang ditentukan. Eksekusi keluar dengan kode 13.

    Tersedia mulai dengan .NET 11 Pratinjau 7 dan memerlukan MTP 2.4 atau yang lebih baru.

  • --timeout <DURATION>

    Menghentikan eksekusi lengkap setelah durasi yang ditentukan saat setidaknya satu aplikasi pengujian berjalan. Tentukan angka positif diikuti oleh unit, seperti 500ms, , 90s10m, 2h, atau 1d. Eksekusi kehabisan waktu keluar dengan kode 3.

    Tersedia mulai dengan .NET 11 Pratinjau 7 dan memerlukan MTP 2.4 atau yang lebih baru.

  • -e|--environment <NAME="VALUE">

    Mengatur variabel lingkungan untuk proses pengujian. Tentukan opsi beberapa kali untuk mengatur beberapa variabel. Nilai baris perintah mengambil alih nilai dari profil peluncuran.

    Gunakan .NET SDK 10.0.110 atau yang lebih baru ketika tidak ada profil peluncuran atau ketika Anda menentukan --no-launch-profile; versi SDK .NET 10 yang lebih lama dapat mengabaikan variabel dalam kasus tersebut. Dimulai dengan .NET 11 Pratinjau 7, variabel juga mengalir ke build yang sadar kemampuan, pemilihan perangkat, penyebaran, dan target run-argument.

  • -a|--arch <ARCHITECTURE>

    Menentukan arsitektur target. Hal ini adalah sintaks singkat untuk mengatur Pengidentifikasi Runtime (RID), di mana nilai yang disediakan digabung dengan RID default. Misalnya, pada komputer win-x64, menentukan --arch x86 akan mengatur RID ke win-x86. Jika Anda menggunakan opsi ini, jangan gunakan opsi -r|--runtime. Tersedia sejak .NET 6 Pratinjau 7.

  • --artifacts-path <ARTIFACTS_DIR>

    Semua file output build dari perintah yang dijalankan akan masuk ke subfolder di bawah jalur yang ditentukan, dipisahkan oleh proyek. Untuk informasi selengkapnya, lihat Tata Letak Output Artefak . Opsi ini dan nilai yang disediakan harus secara eksplisit dikaitkan dalam perintah apa pun dotnet yang bergantung pada output perintah lain dotnet , misalnya, saat menggunakan dotnet build --no-restore dan dotnet publish --no-build. Tersedia sejak .NET 8 SDK.

    Tersedia untuk mode MTP yang dimulai dengan .NET 11.

  • -c|--configuration <CONFIGURATION>

    Menentukan konfigurasi build. Default untuk sebagian besar proyek adalah Debug, tetapi Anda dapat mengambil alih pengaturan konfigurasi build di project Anda.

  • -f|--framework <FRAMEWORK>

    Moniker kerangka kerja target (TFM) dari kerangka kerja target untuk menjalankan pengujian. Kerangka kerja target juga harus ditentukan dalam file project.

  • --os <OS>

    Menentukan sistem operasi (OS) target. Hal ini adalah sintaks singkat untuk mengatur Pengidentifikasi Runtime (RID), di mana nilai yang disediakan digabung dengan RID default. Misalnya, pada komputer win-x64, menentukan --os linux akan mengatur RID ke linux-x64. Jika Anda menggunakan opsi ini, jangan gunakan opsi -r|--runtime. Tersedia sejak .NET 6.

  • -r|--runtime <RUNTIME_IDENTIFIER>

    Runtime bahasa umum target yang akan diuji.

    Formulir pendek -r tersedia mulai .NET SDK 7.

    Nota

    Menjalankan pengujian untuk solusi dengan properti global RuntimeIdentifier (secara eksplisit atau melalui --arch, , --runtimeatau --os) tidak didukung. Atur RuntimeIdentifier pada tingkat project individual sebagai gantinya.

  • --use-current-runtime|--ucr

    Menggunakan runtime saat ini sebagai runtime target selama pemulihan dan build.

    Tersedia dimulai dengan .NET 11 Pratinjau 6. Anda tidak dapat menggabungkan opsi ini dengan --test-modules.

  • -v|--verbosity <LEVEL>

    Mengatur tingkat verbositas perintah. Nilai yang diizinkan adalah q[uiet], m[inimal], n[ormal], d[etailed], dan diag[nostic]. Untuk informasi selengkapnya, lihat LoggerVerbosity .

  • --no-build

    Menentukan bahwa project pengujian tidak dibuat sebelum dijalankan. Ini juga secara implisit mengatur bendera --no-restore.

  • --no-dependencies

    Melompati referensi proyek-ke-proyek bangunan.

    Tersedia dimulai dengan .NET 11 Pratinjau 6.

  • --no-restore

    Menentukan bahwa pemulihan implisit tidak dijalankan saat menjalankan perintah.

  • --nologo|--no-logo|--no-banner

    Menekan banner startup .NET dan MTP. Formulir -nologo dan /nologo dan DOTNET_NOLOGO variabel lingkungan juga didukung.

    Tersedia dalam mode MTP dimulai dengan .NET 11 Pratinjau 7.

  • --no-ansi

    Menonaktifkan output karakter escape ANSI ke layar.

  • --no-progress

    Menonaktifkan kemajuan pelaporan ke layar.

  • --no-artifact-post-processing

    Menonaktifkan pasca-pemrosesan artefak yang kompatibel setelah eksekusi multi-modul. Dimulai dengan .NET 11 RC 1 dan MTP 2.4, artefak terdaftar pasca-prosesor dapat menggabungkan laporan yang kompatibel, seperti hasil TRX. Jika pasca-pemrosesan gagal, SDK mempertahankan artefak asli dan kode keluar pengujian.

  • --output <VERBOSITY_LEVEL>

    Menentukan verbositas output untuk hasil pengujian. Nilai yang valid adalah Minimal, Normal, dan Detailed. Defaultnya adalah Normal. Minimal memerlukan pratinjau MTP 2.4.

  • --show-test-results <OUTCOME>

    Memilih blok hasil berdasarkan hasil. Dalam pratinjau MTP 2.4, gunakan passed, , failedskipped, all, atau none. Nilai ini failed juga mencakup kesalahan, waktu habis, dan pembatalan.

    Gabungkan passed, failed, dan skipped dengan koma, spasi, atau opsi berulang --show-test-results . Jangan gabungkan all atau none dengan nilai lain. Opsi eksplisit ini mengambil alih --output preset terlepas dari urutan opsi.

  • --list-tests [text|json]

    Mencantumkan pengujian yang ditemukan tanpa mengeksekusinya. Hilangkan nilai atau tentukan text untuk output yang dapat dibaca manusia. Dimulai dengan .NET 11 Pratinjau 7, tentukan json untuk dokumen JSON versi yang mengelompokkan pengujian menurut assembly, kerangka kerja target, dan arsitektur dan mencakup pengidentifikasi, lokasi sumber, metode, parameter, dan sifat yang tersedia.

  • --no-launch-profile

    Jangan mencoba menggunakan launchSettings.json untuk mengonfigurasi aplikasi. Secara default, launchSettings.json digunakan, yang dapat menerapkan variabel lingkungan dan argumen baris perintah ke pengujian yang dapat dieksekusi.

  • --no-launch-profile-arguments

    Jangan gunakan argumen yang ditentukan oleh commandLineArgs dalam profil peluncuran untuk menjalankan aplikasi.

  • --device <DEVICE_ID>

    Memilih perangkat, emulator, atau simulator untuk setiap kerangka kerja target dalam proyek pengujian Android atau iOS. Jalur MTP juga mendukung proyek pengujian macOS dan Mac Catalyst. Jika input interaktif dan lebih dari satu perangkat tersedia, dotnet test dapat meminta Anda untuk memilihnya.

    Tersedia dimulai dengan .NET 11 Pratinjau 6. Untuk proyek multi-target, gunakan .NET 11 RC 2 atau yang lebih baru sehingga penemuan perangkat mengevaluasi setiap kerangka kerja target dengan benar. Proyek pengujian Browser WebAssembly tidak didukung oleh opsi ini.

  • --list-devices

    Mencantumkan perangkat yang tersedia untuk proyek tanpa menjalankan pengujian. Tentukan proyek daripada solusi.

    Tersedia dimulai dengan .NET 11 Pratinjau 7.

  • --collect-test-map dan --affected-tests

    Kumpulkan peta pengujian repositori atau jalankan pengujian yang terpengaruh oleh perubahan. Opsi eksperimental ini memerlukan ekstensi yang didistribusikan secara terpisah dan DOTNET_CLI_ENABLE_AFFECTED_TESTS=1 variabel lingkungan. Anda tidak dapat menggabungkan dua opsi. Alur kerja uji yang terpengaruh juga tidak mendukung pengujian perangkat, modul pengujian paralel, atau kebijakan pengujian minimum.

    Tersedia mulai dengan .NET 11 RC 1.

  • --property:<NAME>=<VALUE>

    Mengatur satu atau beberapa properti MSBuild. Tentukan beberapa properti dengan mengulangi opsi:

    --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>
    

    Formulir -p pendek dapat digunakan untuk --property. Hal yang sama berlaku untuk /property:property=value dan bentuk pendeknya /p. Informasi selengkapnya tentang argumen yang tersedia dapat ditemukan dalam dokumentasi dotnet msbuild.

  • -?|-h|--help

    Mencetak deskripsi cara menggunakan perintah.

  • args

    Menentukan argumen tambahan untuk diteruskan ke aplikasi pengujian. Gunakan spasi untuk memisahkan beberapa argumen. Untuk informasi dan contoh selengkapnya tentang apa yang harus diteruskan, lihat gambaran umum MTP dan fitur MTP.

    Petunjuk / Saran

    Untuk menentukan argumen tambahan untuk proyek tertentu, gunakan properti MSBuild TestingPlatformCommandLineArguments. Properti ini sangat berguna ketika solusi Anda mencampur kerangka kerja pengujian (misalnya, MSTest dan xUnit.net) atau ketika hanya beberapa proyek yang mereferensikan ekstensi tertentu. Untuk informasi selengkapnya, lihat Solusi dengan kerangka kerja atau ekstensi pengujian campuran.

Nota

Untuk mengaktifkan pengelogan jejak ke file, gunakan variabel lingkungan DOTNET_CLI_TEST_TRACEFILE untuk menyediakan jalur ke file pelacakan.

Dimulai dengan .NET 11 RC 1, dotnet test -bl menggunakan satu sesi MSBuild untuk multi-proyek, multi-target, dan perangkat berjalan sehingga log biner berisi build lengkap.

Perilaku output dan pembatalan

Dimulai dengan .NET 11 Pratinjau 6, output ANSI interaktif menunjukkan pengujian yang saat ini berjalan dan melaporkan jumlah pengujian per rakitan. Tampilan kemajuan tetap dinonaktifkan saat output dialihkan, ANSI atau output kemajuan dinonaktifkan, atau lingkungan tidak interaktif.

Dimulai dengan .NET 11 Pratinjau 6, Ctrl+C pertama berhenti menjadwalkan aplikasi pengujian baru dan meminta pembatalan kooperatif. Tekan Ctrl+C lagi untuk segera mengakhiri proses anak. Eksekusi yang dibatalkan keluar dengan kode 3.

Output host pengujian langsung memerlukan host MTP yang mendukung protokol 1.1 atau yang lebih baru. Host yang lebih lama menyimpan output yang diambil dan memutarnya kembali untuk modul yang gagal. Dimulai dengan .NET 11 Pratinjau 7, ringkasan kegagalan memotong output standar yang diambil lebih dari 40 baris ke 30 pertama dan 10 baris terakhir; log diagnostik mempertahankan output lengkap.

Untuk eksekusi multi-modul, dotnet test evaluasi hasil zero-test di seluruh eksekusi lengkap yang dimulai dengan .NET 11 Pratinjau 7. Modul tanpa pengujian tidak gagal dijalankan jika modul lain berhasil menjalankan pengujian, kecuali kebijakan pengujian minimum eksplisit memerlukan lebih banyak pengujian.

Hasil dan artefak

Ketika tata letak output artefak SDK diaktifkan, .NET 11 RC 1 dan versi yang lebih baru menempatkan laporan MTP, file cakupan, dan diagnostik di bawah <ArtifactsPath>/test/<project>/<pivot> secara default. Eksplisit --results-directory atau --results-directory-layout diutamakan.

Dimulai dengan .NET 11 RC 1 dan MTP 2.4, ekstensi yang kompatibel dapat memproses artefak pasca-proses dari eksekusi multi-modul. Misalnya, ekstensi TRX dapat membuat laporan gabungan sambil mempertahankan laporan per modul. Untuk persyaratan ekstensi dan laporan, lihat laporan pengujian MTP.

Meneruskan argumen ke aplikasi pengujian

dotnet test meneruskan token apa pun yang tidak dikenali oleh aplikasi pengujian. Ketika opsi yang dikenali muncul antara nama opsi yang tidak dikenali dan nilainya, menghapus opsi yang dikenali dapat mengubah bagaimana token sisa mengikat opsi dalam aplikasi pengujian. Untuk menghindari ambiguitas ini, tempatkan argumen aplikasi pengujian setelah literal --:

dotnet test --results-directory TestResults -- --report-trx --report-trx-filename A.trx

Contoh sebelumnya memerlukan Microsoft.Testing.Extensions.TrxReport paket, baik sebagai referensi paket langsung atau melalui konfigurasi SDK pengujian yang menyertakannya.

Perilaku pengurai yang sama berlaku untuk dotnet run dan dotnet build. Untuk contoh terperinci, lihat Meneruskan argumen ke aplikasi dalam dotnet run referensi.

Minimum eksekusi keseluruhan dan per modul

Untuk --minimum-expected-tests, pemisah -- menentukan cakupan opsi:

  • Argumen sebelumnya-- bersifat global. Orkestrator dotnet test menafsirkannya untuk seluruh proses.
  • Argumen setelah-- bersifat lokal. dotnet test meneruskannya ke setiap modul pengujian, sehingga setiap modul menerapkannya secara independen.

Karena --minimum-expected-tests tersedia di kedua cakupan, Anda dapat memerlukan minimal untuk seluruh eksekusi, untuk setiap modul, atau keduanya:

dotnet test --minimum-expected-tests 5 -- --minimum-expected-tests 2

Perintah sebelumnya memerlukan setidaknya 5 pengujian di seluruh eksekusi dan setidaknya 2 pengujian di setiap modul pengujian.

Dua cakupan menghitung pengujian yang dilewati secara berbeda:

Ruang lingkup Apakah pengujian yang dilewati dihitung ke minimum?
Global Yes. Total dotnet test agregat mencakup pengujian yang dilewati.
Per modul No. MTP mengecualikan pengujian yang dilewati dari jumlah pengujian yang berjalan.

Dimulai dengan .NET 11 SDK, putusan zero-tests untuk seluruh eksekusi diputuskan sekali dari hasil agregat. Modul yang tidak cocok dengan pengujian, misalnya karena --test-modules atau global --filter, keluar dengan kode 8 (ZeroTests), tetapi kode tersebut dinormalisasi agar berhasil sebelum hasilnya dikumpulkan. Akibatnya, satu modul kosong tidak gagal seluruh eksekusi, meskipun modul menyimpan diagnostiknya Exit code: 8 dalam output untuk visibilitas.

MTP 4.3.0 dan versi yang lebih baru menyediakan --zero-tests-policy <allow-skipped|strict>. Nilai default, allow-skipped, memungkinkan modul yang dilewati berhasil. Nilai memperlakukan strict pengujian yang dilewati sebagai tidak berjalan, sehingga modul yang dilewati keluar dengan kode 8. Teruskan opsi setelah -- untuk meneruskannya ke setiap modul pengujian:

dotnet test -- --zero-tests-policy strict

Ketika Anda tidak menetapkan minimum global, .NET 11 SDK menentukan putusan zero-test yang dijalankan secara terpisah. Seluruh eksekusi yang dilewati keluar dengan kode 8 terlepas dari nilai per modul --zero-tests-policy .

Saat Anda menentukan --minimum-expected-tests dan minimum tidak terpenuhi, eksekusi gagal dengan kode keluar 9 (MinimumExpectedTestsPolicyViolation). Kode ini berbeda dari 8 sehingga minimum global atau per modul yang lebih ketat tidak dikacaukan dengan modul kosong. Agar minimum per modul mengembalikan kode 9 saat modul menjalankan nol pengujian, modul pengujian harus menggunakan MTP 4.4.0 atau versi yang lebih baru.

Nota

--minimum-expected-tests 0 tidak valid. Untuk menekan kode keluar zero-tests, gunakan --ignore-exit-code 8.

Dimulai dengan .NET 11 Pratinjau 6, --tl, --terminallogger, dan --tlp diteruskan ke MSBuild alih-alih aplikasi pengujian. Dimulai dengan .NET 12 Pratinjau 1, formulir dan -multiThreaded yang dikenali -mt juga diteruskan ke MSBuild. Untuk meneruskan opsi aplikasi dengan salah satu nama ini, letakkan setelah --.

Teruskan opsi mode eksekusi seperti --help dan --list-tests langsung ke dotnet test. Dimulai dengan .NET 11 Pratinjau 6, SDK memvalidasi mode eksekusi yang dinegosiasikan dengan aplikasi pengujian. Jika profil peluncuran atau TestingPlatformCommandLineArguments menyuntikkan salah satu opsi ini, operasi SDK yang diminta dan operasi aplikasi tidak cocok, dan eksekusi gagal dengan diagnostik.

Examples

  • Jalankan pengujian di project atau solusi di direktori saat ini:

    dotnet test
    
  • Jalankan pengujian di TestProject project:

    dotnet test --project ./TestProject/TestProject.csproj
    
  • Jalankan pengujian dalam solusi TestProjects:

    dotnet test --solution ./TestProjects/TestProjects.sln
    
  • Jalankan pengujian menggunakan assembly TestProject.dll:

    dotnet test --test-modules "**/bin/**/Debug/net10.0/TestProject.dll"
    
  • Jalankan pengujian menggunakan rakitan TestProject.dll dengan direktori akar:

    dotnet test --test-modules "**/bin/**/Debug/net10.0/TestProject.dll" --root-directory "c:\code"
    
  • Jalankan semua proyek pengujian yang dirujuk oleh proyek traversal dengan .NET 11 Pratinjau 7 atau yang lebih baru:

    dotnet test dirs.proj
    
  • Mencantumkan pengujian sebagai JSON dengan .NET 11 Pratinjau 7 atau yang lebih baru:

    dotnet test --list-tests json
    
  • Jalankan aplikasi uji MTP berbasis file C# dengan .NET 12 Pratinjau 1 atau yang lebih baru:

    dotnet test App.Tests.cs
    
  • Jalankan pengujian di direktori saat ini dengan ekstensi Cakupan Kode Microsoft. Aplikasi pengujian harus mereferensikan Microsoft.Testing.Extensions.CodeCoverage, baik secara langsung atau melalui konfigurasi SDK pengujian yang menyertakannya:

    dotnet test --coverage
    
  • Jalankan pengujian dan simpan hasil dalam direktori tertentu:

    dotnet test --results-directory ./TestResults
    
  • Jalankan pengujian dengan output diagnostik di direktori tertentu:

    dotnet test --diagnostic-output-directory ./Diagnostics
    
  • Jalankan pengujian yang memastikan setidaknya 10 pengujian dijalankan:

    dotnet test --minimum-expected-tests 10
    
  • Memerlukan setidaknya 5 pengujian di seluruh eksekusi dan setidaknya 2 pengujian di setiap modul pengujian:

    dotnet test --minimum-expected-tests 5 -- --minimum-expected-tests 2
    
  • Jalankan pengujian di TestProject project, menyediakan argumen -bl (log biner) ke msbuild:

    dotnet test --project ./TestProject/TestProject.csproj -bl
    
  • Jalankan pengujian di TestProject project, atur properti MSBuild DefineConstants ke DEV:

    dotnet test --project ./TestProject/TestProject.csproj -p:DefineConstants="DEV"
    

Lihat juga