Microsoft.Testing.Platform (MTP) pengaturan konfigurasi

MTP mendukung penggunaan file konfigurasi dan variabel lingkungan untuk mengonfigurasi perilaku platform pengujian. Artikel ini menjelaskan pengaturan konfigurasi yang dapat Anda gunakan untuk mengonfigurasi platform pengujian.

testconfig.json

Platform pengujian menggunakan file konfigurasi bernama [appname].testconfig.json untuk mengonfigurasi perilaku platform pengujian. File testconfig.json adalah file JSON yang berisi pengaturan konfigurasi untuk platform pengujian.

File testconfig.json memiliki struktur berikut:

{
    "platformOptions": {
        "resultDirectory": "./TestResults"
    }
}

Platform akan secara otomatis mendeteksi dan memuat file.testconfig.json [appname] yang terletak di direktori output proyek pengujian (dekat dengan yang dapat dieksekusi).

Saat menggunakan Microsoft.Testing.Platform.MSBuild, Anda cukup membuat file testconfig.json yang akan secara otomatis diganti namanya menjadi [nama aplikasi].testconfig.json dan dipindahkan ke direktori output proyek pengujian.

Dimulai dengan MTP 1.5, Anda dapat menggunakan argumen --config-file baris perintah untuk menentukan jalur ke testconfig.json. File ini lebih diutamakan daripada file.testconfig.json [appname].

Nota

File.testconfig.json [appname] akan ditimpa pada build berikutnya.

Menggunakan testconfig.json terpusat

Jika Anda ingin satu testconfig.json dibagikan di beberapa proyek pengujian, Anda dapat menempatkannya di lokasi pusat dan meneruskannya melalui --config-file. Saat MSBuild tersedia (misalnya, dotnet test atau dotnet run), Anda dapat menggunakan TestingPlatformCommandLineArguments properti MSBuild untuk meneruskan argumen secara otomatis. Menambahkan ini ke Directory.Build.props di akar repositori memastikan semua proyek pengujian menggunakan konfigurasi yang sama:

<PropertyGroup>
  <TestingPlatformCommandLineArguments>
    $(TestingPlatformCommandLineArguments) --config-file $(MSBuildThisFileDirectory)testconfig.json
  </TestingPlatformCommandLineArguments>
</PropertyGroup>

Urutan prioritas konfigurasi

Ketika pengaturan yang sama dapat ditentukan dalam beberapa cara, MTP menyelesaikannya dalam urutan berikut (kemenangan pertandingan pertama):

  1. Argumen baris perintah (misalnya, --results-directory)
  2. Variabel lingkungan
  3. testconfig.json setelan
  4. Setelan bawaan

Pilihan platform

Bagian platformOptions file testconfig.json mengonfigurasi perilaku inti platform pengujian. Tabel berikut ini mencantumkan semua opsi platform yang didukung:

Entri Default Description
resultDirectory TestResults Direktori tempat hasil pengujian ditempatkan. Dapat berupa jalur relatif (diselesaikan dari direktori kerja saat ini) atau jalur absolut. Opsi --results-directory baris perintah lebih diutamakan.
exitProcessOnUnhandledException false Ketika diatur ke true, proses host uji langsung keluar saat terjadi pengecualian yang tidak tertangani, alih-alih memungkinkan proses dimatikan secara normal. Variabel TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION lingkungan (nilai 1 atau 0) lebih diutamakan.

Nota

Opsi platform internal tambahan ada untuk skenario lanjutan (seperti batas waktu pipa bernama untuk pengontrol host pengujian). Opsi ini ditujukan untuk penggunaan infrastruktur dan tidak tercakup di sini.

Contoh:

{
  "platformOptions": {
    "resultDirectory": "../../TestResults",
    "exitProcessOnUnhandledException": false
  }
}

Variabel lingkungan dalam testconfig.json

Nota

Tersedia di MTP yang dimulai dengan versi 2.3.0.

Bagian ini environmentVariables mengatur variabel lingkungan untuk proses pengujian sebelum dimulai. Gunakan nilai string untuk setiap variabel.

{
  "environmentVariables": {
    "DOTNET_ENVIRONMENT": "Development",
    "FEATURE_FLAG": "true"
  }
}

Opsi CLI di testconfig.json

Sebelum MTP 2.3.0, fitur ekstensi seperti crash dump, hang dump, coba lagi, laporan TRX, dan cakupan kode tidak dapat dikonfigurasi melalui testconfig.json. Fitur-fitur ini dikonfigurasi secara eksklusif melalui argumen baris perintah.

Dimulai dengan MTP 2.3.0, MTP dapat membaca opsi CLI dari testconfig.json melalui IConfiguration. Dukungan ini mencakup opsi ekstensi, sehingga Anda dapat menggunakan entri JSON untuk opsi yang tidak ingin Anda teruskan pada baris perintah setiap eksekusi. Argumen baris perintah masih diutamakan.

Untuk referensi lengkap opsi baris perintah, lihat Referensi opsi MTP CLI.

Menguji pengaturan khusus kerangka kerja

Kerangka kerja pengujian dapat menentukan bagian konfigurasi mereka sendiri dalam file testconfig.json . Lihat dokumentasi untuk kerangka kerja pengujian Anda:

Contoh testconfig.json

Contoh berikut menunjukkan file testconfig.json yang mengonfigurasi opsi platform dan pengaturan MSTest:

{
  "platformOptions": {
    "resultDirectory": "./TestResults"
  },
  "mstest": {
    "parallelism": {
      "enabled": true,
      "workers": 4,
      "scope": "method"
    },
    "timeout": {
      "test": 30000
    },
    "execution": {
      "considerFixturesAsSpecialTests": true
    }
  }
}

Migrasi dari .runsettings ke testconfig.json

Jika Anda bermigrasi dari file .runsettings , tabel berikut memetakan pengaturan umum ke testconfig.json setara atau alternatifnya:

Pengaturan .runsettings testconfig.json yang setara dengan Catatan
RunConfiguration/ResultsDirectory platformOptions.resultDirectory
RunConfiguration/MaxCpuCount Tidak ada yang setara Paralelisme tingkat proses dikendalikan oleh dotnet test --max-parallel-test-modules atau opsi MSBuild /m .
MSTest/* mstest.* Lihat Mengonfigurasi MSTest — testconfig.json.
xUnit/* xUnit.* Lihat xUnit.net testconfig.json.
LoggerRunSettings/Loggers Opsi CLI Gunakan --report-trx atau opsi CLI serupa. Dimulai dengan MTP 2.3.0, MTP dapat membaca opsi CLI dari testconfig.json.
DataCollectionRunSettings (menyalahkan) Opsi CLI Gunakan --crashdump dan --hangdump opsi CLI. Dimulai dengan MTP 2.3.0, MTP dapat membaca opsi CLI dari testconfig.json. Lihat Crash dan hang dump.
DataCollectionRunSettings (cakupan) Opsi CLI Gunakan --coverage opsi CLI. Dimulai dengan MTP 2.3.0, MTP dapat membaca opsi CLI dari testconfig.json. Lihat Cakupan kode.
TestRunParameters --test-parameter CLI Gunakan --test-parameter key=value pada baris perintah.

Variabel lingkungan

Variabel lingkungan dapat digunakan untuk menyediakan beberapa informasi konfigurasi runtime.

Nota

Variabel lingkungan lebih diutamakan daripada pengaturan konfigurasi dalam file testconfig.json.

variabel lingkungan TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION

Ketika diatur ke 1, proses host uji akan langsung keluar saat terjadi pengecualian yang tidak tertangani. Ketika diatur ke 0, platform memungkinkan penghentian secara elegan. Pengaturan ini lebih diutamakan daripada platformOptions:exitProcessOnUnhandledException konfigurasi.

variabel lingkungan TESTINGPLATFORM_DEFAULT_HANG_TIMEOUT

Mengganti waktu tunggu default (300 detik) yang digunakan untuk koneksi named pipe antara pengontrol host pengujian dan host pengujian. Nilai harus berupa TimeSpanstring yang kompatibel.

variabel lingkungan TESTINGPLATFORM_UI_LANGUAGE

Dimulai dengan MTP 1.5, variabel lingkungan ini mengatur bahasa platform untuk menampilkan pesan dan log menggunakan nilai lokal seperti en-us. Bahasa ini lebih diutamakan daripada bahasa Visual Studio dan .NET SDK. Nilai yang didukung sama seperti untuk Visual Studio. Untuk informasi selengkapnya, lihat bagian tentang mengubah bahasa penginstal dalam dokumentasi penginstalan Visual Studio.

variabel lingkungan TESTINGPLATFORM_DIAGNOSTIC

Jika diatur ke 1, mengaktifkan pembuatan log diagnostik.

variabel lingkungan TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY

Menentukan tingkat verbositas saat diagnostik diaktifkan. Nilai yang tersedia adalah Trace, Debug, Information, Warning, Error, atau Critical.

variabel lingkungan TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY

Direktori keluaran untuk pencatatan log diagnostik. Jika tidak ditentukan, file dihasilkan di direktori TestResults default.

variabel lingkungan TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX

Awalan untuk nama file log. Secara default menjadi "log_". Sesuai dengan opsi baris perintah --diagnostic-file-prefix.

Nota

Nama variabel lingkungan ini tersedia di MTP yang dimulai dengan versi 2.3.0. Variabel lingkungan warisan TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX masih didukung demi kompatibilitas ke belakang, tetapi telah didepresiasi dan mungkin dihapus pada versi utama mendatang. Ketika kedua variabel diatur, TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX diprioritaskan.

variabel lingkungan 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. Sesuai dengan opsi baris perintah --diagnostic-synchronous-write.

Nota

Nama variabel lingkungan ini tersedia di MTP yang dimulai dengan versi 2.3.0. Variabel lingkungan warisan TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE masih didukung demi kompatibilitas ke belakang, tetapi telah didepresiasi dan mungkin dihapus pada versi utama mendatang. Ketika kedua variabel diatur, TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE diprioritaskan.

variabel lingkungan TESTINGPLATFORM_EXITCODE_IGNORE

Daftar kode keluar yang diabaikan, dipisahkan dengan titik koma. Ketika kode keluar diabaikan, proses akan kembali 0 sebagai gantinya. Misalnya, TESTINGPLATFORM_EXITCODE_IGNORE=2;8 mengabaikan kegagalan pengujian dan skenario tanpa pengujian yang dijalankan.

variabel lingkungan TESTINGPLATFORM_NOBANNER

Saat diatur ke 1 atau true, opsi ini menyembunyikan banner saat startup, pesan hak cipta, dan banner telemetri. Setara dengan --no-banner opsi baris perintah. Variabel DOTNET_NOLOGO lingkungan memiliki efek yang sama.

variabel lingkungan NO_COLOR

Jika diatur ke nilai apa pun yang tidak kosong, semua keluaran warna ANSI akan dinonaktifkan. MTP menghormati NO_COLOR konvensi.

Nota

Tersedia di MTP yang dimulai dengan versi 2.3.0.

variabel lingkungan DOTNET_NOLOGO

Saat diatur ke 1 atau true, opsi ini menyembunyikan banner saat startup, pesan hak cipta, dan banner telemetri. Ini adalah variabel lingkungan CLI .NET standar dan dihormati oleh MTP. Lihat juga TESTINGPLATFORM_NOBANNER.

variabel lingkungan TESTINGPLATFORM_WAIT_ATTACH_DEBUGGER

Ketika diatur ke 1, proses pengujian berhenti sejenak saat startup dan menunggu debugger dilampirkan sebelum melanjutkan. Setara dengan --debug opsi baris perintah. Tidak didukung pada platform browser.

Nota

Variabel lingkungan ini tersedia di MTP yang dimulai dengan versi 1.6.0.

variabel lingkungan TESTINGPLATFORM_LAUNCH_ATTACH_DEBUGGER

Ketika diatur ke 1, proses pengujian memanggil Debugger.Launch() saat mulai dijalankan, yang menyebabkan sistem meluncurkan debugger just-in-time dan melampirkannya ke proses tersebut. Gunakan variabel ini untuk mendebug masalah saat startup (misalnya, handshake mode server) yang terjadi sebelum Anda dapat melakukan attach secara manual. Pada platform non-Windows, perilaku tergantung pada debugger JIT yang dikonfigurasi.

Nota

Variabel lingkungan ini tersedia di MTP yang dimulai dengan versi 1.6.0.

Nota

Variabel lingkungan terkait diagnostik lebih diutamakan daripada argumen baris perintah yang --diagnostic-* sesuai.

Baca juga