Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini berisi panduan pemecahan masalah untuk MTP.
Kode keluaran
MTP menggunakan kode keluar yang diketahui untuk mengomunikasikan kegagalan pengujian atau kesalahan aplikasi. Kode keluar dimulai dari 0 dan tidak negatif.
| Kode keluar | Detail lebih lanjut |
|---|---|
0 |
Kode 0 keluar menunjukkan keberhasilan. Semua pengujian yang dipilih untuk dijalankan hingga selesai dan tidak ada kesalahan. |
1 |
Kode 1 keluar menunjukkan kesalahan yang tidak diketahui dan bertindak sebagai penampung semua. Untuk menemukan informasi dan detail kesalahan tambahan, periksa pada output. |
2 |
Kode keluar digunakan 2 untuk menunjukkan bahwa setidaknya ada satu kegagalan pengujian. |
3 |
Kode 3 keluar menunjukkan bahwa sesi pengujian dibatalkan. Sesi dapat dibatalkan menggunakan Ctrl+C, sebagai contoh. |
4 |
Kode 4 keluar menunjukkan bahwa penyiapan ekstensi yang digunakan tidak valid dan sesi pengujian tidak dapat berjalan. |
5 |
Kode 5 keluar menunjukkan bahwa argumen baris perintah yang diteruskan ke aplikasi pengujian tidak valid. |
6 (tidak lagi digunakan) |
Kode keluar 6 tidak lagi diproduksi oleh platform, sebelumnya digunakan untuk menunjukkan bahwa sesi pengujian menggunakan fitur yang belum diimplementasikan. |
7 |
Kode 7 keluar menunjukkan bahwa sesi pengujian tidak berhasil diselesaikan, dan kemungkinan crash. Ada kemungkinan bahwa ini disebabkan oleh sesi pengujian yang dijalankan melalui titik ekstensi pengontrol pengujian. |
8 |
Kode 8 keluar menunjukkan bahwa sesi pengujian menjalankan tes nol. |
9 |
Kode 9 keluar menunjukkan bahwa kebijakan eksekusi minimum untuk pengujian yang dijalankan dilanggar. |
10 |
Kode 10 keluar menunjukkan bahwa adaptor pengujian, Testing.Platform Test Framework, MSTest, NUnit, atau xUnit, gagal menjalankan pengujian karena alasan infrastruktur yang tidak terkait dengan diri pengujian. Contohnya adalah gagal membuat perlengkapan yang diperlukan oleh pengujian. |
11 |
Kode 11 keluaran menunjukkan bahwa proses pengujian akan berhenti jika proses yang bergantung berhenti. |
12 |
Kode 12 keluar menunjukkan bahwa sesi pengujian tidak dapat dijalankan karena klien tidak mendukung versi protokol yang didukung. |
13 |
Kode 13 keluar menunjukkan bahwa sesi pengujian dihentikan karena mencapai jumlah pengujian maksimum yang gagal yang ditentukan menggunakan --maximum-failed-tests opsi baris perintah. Untuk informasi selengkapnya, lihat bagian Opsi di referensi opsi MTP CLI |
Untuk mengaktifkan pencatatan log rinci dan memecahkan masalah, lihat pencatatan diagnostik.
Abaikan kode keluar tertentu
MTP dirancang agar ketat secara default tetapi memungkinkan konfigurasi. Dengan demikian, pengguna dapat memutuskan kode keluar mana yang harus diabaikan (kode 0 keluar akan dikembalikan alih-alih kode keluar asli).
Untuk mengabaikan kode keluar tertentu, gunakan --ignore-exit-code opsi baris perintah atau TESTINGPLATFORM_EXITCODE_IGNORE variabel lingkungan. Format valid yang diterima adalah daftar kode keluar yang dipisahkan titik koma untuk diabaikan (misalnya, --ignore-exit-code 2;3;8). Skenario umum adalah mempertimbangkan bahwa kegagalan pengujian tidak boleh mengakibatkan kode keluar nonzero (yang sesuai dengan mengabaikan kode 2keluar ).
Log diagnostik
Platform ini menyediakan pembuatan log diagnostik bawaan untuk membantu Anda memecahkan masalah eksekusi pengujian. Anda dapat mengaktifkan pengelogan diagnostik melalui opsi baris perintah atau variabel lingkungan.
Opsi baris perintah
Opsi platform berikut memberikan informasi yang berguna untuk memecahkan masalah aplikasi pengujian Anda:
--info--diagnostic--diagnostic-synchronous-write--diagnostic-verbosity--diagnostic-file-prefix--diagnostic-output-directory
Variabel lingkungan
Anda juga dapat mengaktifkan log diagnostik menggunakan variabel lingkungan:
| Nama variabel lingkungan | Deskripsi |
|---|---|
TESTINGPLATFORM_DIAGNOSTIC |
Jika diatur ke 1, mengaktifkan pembuatan log diagnostik. |
TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY |
Menentukan tingkat verbositas. Nilai yang tersedia adalah Trace, Debug, Information, Warning, Error, atau Critical. |
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY |
Direktori keluaran untuk pencatatan diagnostik, jika tidak ditentukan, file akan dihasilkan dalam direktori default TestResults. |
TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX |
Awalan untuk nama file log. Secara default menjadi "log_". Tersedia di MTP mulai versi 2.3.0; nama lama TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX tetap didukung untuk kompatibilitas ke belakang. |
TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE |
Memaksa pencatat file bawaan untuk menulis log secara sinkron. Berguna untuk skenario di mana Anda tidak ingin kehilangan entri log apa pun (jika proses crash). Ini memperlambat eksekusi pengujian. Tersedia di MTP mulai versi 2.3.0; nama lama TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE masih didukung untuk kompatibilitas ke belakang. |
Nota
Variabel lingkungan lebih diutamakan daripada argumen baris perintah.
Mengatasi kesalahan konfigurasi
Microsoft.Testing.Platform.MSBuild
Berikut ini adalah kesalahan konfigurasi umum yang terkait dengan Microsoft.Testing.Platform.MSBuild.
kesalahan CS8892: Metode 'TestingPlatformEntryPoint.Main(string[])' tidak akan digunakan sebagai titik masuk karena titik masuk sinkron 'Program.Main(string[])' ditemukan
Menentukan titik masuk (Main) secara manual dalam proyek pengujian atau mereferensikan proyek pengujian dari aplikasi yang sudah memiliki titik masuk menghasilkan konflik dengan titik masuk yang dihasilkan oleh MTP. Untuk menghindari masalah ini, lakukan salah satu langkah berikut:
Hapus titik masuk yang ditentukan secara manual, biasanya
Mainmetode di Program.cs, dan biarkan platform pengujian menghasilkannya untuk Anda.Nonaktifkan pembuatan titik masuk dengan mengatur properti
<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>MSBuild.Nonaktifkan dependensi transitif sepenuhnya ke
Microsoft.Testing.Platform.MSBuilddengan mengatur properti MSBuild<IsTestingPlatformApplication>false</IsTestingPlatformApplication>dalam proyek yang mereferensikan proyek pengujian. Ini diperlukan saat Anda mereferensikan proyek pengujian dari proyek non-pengujian, misalnya, aplikasi konsol yang mereferensikan aplikasi pengujian.
Namespace kode yang dihasilkan berkonflik dengan tipe yang direferensikan
Microsoft.Testing.Platform.MSBuild membuat tipe SelfRegisteredExtensions dan TestingPlatformEntryPoint di dalam $(RootNamespace) proyek. Secara bawaan, RootNamespace sama dengan nama proyek, yang dapat bertabrakan dengan tipe dengan nama yang sepenuhnya memenuhi syarat yang sama yang disediakan oleh assembly yang direferensikan.
Misalnya, proyek bernama System.Security.Cryptography.ProtectedData.Tests akhirnya menghasilkan kode di System.Security.Cryptography.ProtectedData namespace. Jika proyek juga mereferensikan System.Security.Cryptography.ProtectedData paket NuGet, yang berisi jenis publik ProtectedData di bawah System.Security.Cryptography namespace, pengkompilasi tidak dapat lagi membedakan antara namespace yang dihasilkan dan jenis yang direferensikan, dan memancarkan kesalahan seperti CS0118 ("'ProtectedData' adalah namespace tetapi digunakan seperti jenis").
Untuk mengatasi konflik, timpa RootNamespace di proyek pengujian Anda dengan nilai yang tidak bertentangan dengan tipe yang direferensikan:
<PropertyGroup>
<RootNamespace>System.Security.Cryptography.ProtectedDataTests</RootNamespace>
</PropertyGroup>
Anda juga dapat menghapus RootNamespace sepenuhnya (<RootNamespace />), dalam hal ini jenis yang dihasilkan dipancarkan ke dalam namespace global.
Microsoft.Testing.Extensions.Fakes
Kesalahan palsu Gagal mengatasi jalur profiler dari variabel lingkungan COR_PROFILER_PATH dan COR_PROFILER
Kesalahan ini dapat terjadi jika tidak semua rakitan Palsu ada di folder bin.
- Pastikan bahwa proyek menggunakan MSTest.SDK atau referensi Microsoft.Testing.Extensions.Fakes.
- Untuk proyek .NET Framework, hindari pengaturan
<PlatformTarget>AnyCPU</PlatformTarget>karena ini menghasilkan NuGet tidak menyalin semua file ke folder bin.
Opsi baris perintah yang tidak dikenal dalam solusi dengan kerangka kerja atau ekstensi pengujian campuran
Jika solusi Anda berisi proyek yang menggunakan kerangka kerja pengujian yang berbeda (misalnya, MSTest dan xUnit.net) atau serangkaian ekstensi yang berbeda (misalnya, hanya beberapa proyek yang mereferensikan Microsoft.Testing.Extensions.HangDump), menjalankan dotnet test dengan opsi baris perintah khusus kerangka kerja atau ekstensi tertentu yang dapat gagal dengan kode keluar 5. Opsi ini berlaku untuk satu proyek tetapi tidak dikenali oleh proyek lain.
Untuk mengatasi masalah ini, gunakan properti MSBuild TestingPlatformCommandLineArguments dengan menentukan kondisi untuk merutekan argumen ke proyek yang tepat. Untuk petunjuk terperinci, lihat Solusi dengan kerangka kerja atau ekstensi pengujian campuran.