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.
Microsoft.Testing.Platform adalah alternatif ringan dan portabel untuk VSTest untuk menjalankan pengujian di semua konteks, termasuk alur integrasi berkelanjutan (CI), CLI, Visual Studio Test Explorer, dan VS Code Test Explorer. Microsoft.Testing.Platform disematkan langsung dalam proyek pengujian Anda, dan tidak ada dependensi aplikasi lain, seperti vstest.console
atau dotnet test
yang diperlukan untuk menjalankan pengujian Anda.
Microsoft.Testing.Platform
adalah sumber terbuka. Anda dapat menemukan kode Microsoft.Testing.Platform
di repositori GitHub microsoft/testfx.
Prinsip Microsoft.Testing.Platform
Platform pengujian baru ini dibangun berdasarkan pengalaman tim Pengujian Pengalaman Pengembang .NET dan bertujuan untuk mengatasi tantangan yang dihadapi sejak rilis .NET Core pada tahun 2016. Meskipun terdapat tingkat kompatibilitas yang tinggi antara .NET Framework dan .NET Core/.NET, beberapa fitur utama seperti sistem plugin dan faktor bentuk baru yang mungkin dari kompilasi .NET telah membuatnya kompleks untuk dikembangkan atau sepenuhnya didukung oleh fitur runtime baru pada arsitektur platform VSTest saat ini.
Faktor pendorong utama untuk evolusi platform pengujian baru dirinci dalam hal berikut:
Determinisme: Memastikan bahwa menjalankan pengujian yang sama dalam konteks yang berbeda (lokal, CI) akan menghasilkan hasil yang sama. Runtime baru tidak bergantung pada refleksi atau fitur runtime .NET dinamis lainnya untuk mengoordinasikan eksekusi pengujian.
Transparansi Runtime: Runtime pengujian tidak mengganggu kode kerangka kerja pengujian, tidak membuat konteks terisolasi seperti
AppDomain
atauAssemblyLoadContext
, dan tidak menggunakan refleksi atau pemecah perakitan kustom.Registrasi ekstensi pada waktu kompilasi: Ekstensi, seperti kerangka kerja pengujian dan ekstensi di/dari proses, didaftarkan selama waktu kompilasi untuk menjamin determinisme dan memfasilitasi deteksi inkonsistensi.
Tanpa Dependensi: Inti platform adalah satu assembly .NET,
Microsoft.Testing.Platform.dll
, yang tidak memiliki ketergantungan selain runtime yang didukung.Hostable: Runtime pengujian dapat dihosting di aplikasi .NET apa pun. Meskipun aplikasi konsol umumnya digunakan untuk menjalankan pengujian, Anda dapat membuat aplikasi pengujian di semua jenis aplikasi .NET. Ini memungkinkan Anda menjalankan pengujian dalam konteks khusus, seperti perangkat atau browser, di mana mungkin ada batasan.
Mendukung semua faktor bentuk .NET: Mendukung faktor bentuk .NET saat ini dan yang akan datang, termasuk Native AOT.
Performant: Menemukan keseimbangan yang tepat antara fitur dan titik ekstensi untuk menghindari membebani runtime dengan kode non-fundamental. Platform pengujian baru dirancang untuk "mengatur" uji coba, daripada memberikan detail implementasi tentang cara melakukannya.
Cukup fleksibel untuk diperluas: Platform baru dibangun di atas titik ekstensibilitas untuk memungkinkan kustomisasi maksimum dari eksekusi saat runtime. Ini memungkinkan Anda untuk mengonfigurasi host proses pengujian, mengamati proses pengujian, dan menggunakan informasi dari kerangka kerja pengujian dalam proses host pengujian.
Penyebaran modul tunggal: Fitur hostabilitas memungkinkan model penyebaran modul tunggal, di mana satu hasil kompilasi dapat digunakan untuk mendukung semua titik ekstensibilitas, baik di luar proses maupun dalam proses, tanpa perlu mengirim modul yang dapat dieksekusi yang berbeda.
Kerangka kerja pengujian yang didukung
- MSTest. Di MSTest, dukungan
Microsoft.Testing.Platform
dilakukan melalui MSTest runner. - NUnit. Di NUnit,
Microsoft.Testing.Platform
didukung melalui NUnit runner . - xUnit.net: Dalam xUnit.net, dukungan
Microsoft.Testing.Platform
dilakukan melalui xUnit.net runner . - TUnit: sepenuhnya dibangun di atas
Microsoft.Testing.Platform
, untuk informasi selengkapnya, lihat dokumentasi TUnit.
Menjalankan dan memperbaiki pengujian
Microsoft.Testing.Platform
proyek pengujian dibangun sebagai executable yang dapat dijalankan (atau di-debug) secara langsung. Tidak ada konsol atau perintah tambahan untuk pengujian. Aplikasi keluar dengan kode keluar selain nol jika ada kesalahan, yang khas untuk sebagian besar program yang dapat dieksekusi. Untuk informasi selengkapnya tentang kode keluar yang diketahui, lihat kode keluar Microsoft.Testing.Platform.
Saran
Anda dapat mengabaikan kode keluar tertentu menggunakan opsi baris perintah --ignore-exit-code
.
Anda juga dapat mengatur opsi baris perintah yang berlaku untuk proyek pengujian tertentu dalam file proyek menggunakan properti TestingPlatformCommandLineArguments
MSBuild. Salah satu kasus penggunaan umum adalah untuk proyek pengujian yang mengabaikan semua pengujian, yang biasanya akan keluar dengan kode keluar 8 (sesi pengujian menjalankan nol pengujian). Dalam skenario ini, Anda bisa menambahkan yang berikut ini di bawah PropertyGroup
dalam file proyek Anda:
<TestingPlatformCommandLineArguments>$(TestingPlatformCommandLineArguments) --ignore-exit-code 8</TestingPlatformCommandLineArguments>
Penting
Secara default, Microsoft.Testing.Platform
mengumpulkan telemetri. Untuk informasi lebih lanjut dan opsi untuk berhenti berlangganan, lihat telemetri Microsoft.Testing.Platform.
- .NET CLI
- Visual Studio
- Visual Studio Code
- integrasi berkelanjutan (CI)
Menerbitkan proyek pengujian menggunakan dotnet publish
dan menjalankan aplikasi secara langsung adalah cara lain untuk menjalankan pengujian Anda. Misalnya, menjalankan ./Contoso.MyTests.exe
. Dalam beberapa skenario, juga layak untuk menggunakan dotnet build
untuk menghasilkan yang dapat dieksekusi, tetapi mungkin ada kasus tepi yang perlu dipertimbangkan, seperti Native AOT.
Gunakan dotnet run
Perintah dotnet run
dapat digunakan untuk membangun dan menjalankan proyek pengujian Anda. Ini adalah yang paling mudah, meskipun kadang-kadang paling lambat, cara untuk menjalankan tes Anda. Menggunakan dotnet run
praktis saat Anda mengedit dan menjalankan pengujian secara lokal, karena memastikan bahwa proyek pengujian dibangun kembali saat diperlukan.
dotnet run
juga akan secara otomatis menemukan proyek di folder saat ini.
dotnet run --project Contoso.MyTests
Untuk informasi selengkapnya tentang dotnet run
, lihat perintah 'dotnet run'.
Gunakan dotnet exec
Perintah dotnet exec
atau dotnet
digunakan untuk menjalankan (atau menjalankan) proyek pengujian yang sudah dibangun, ini adalah alternatif untuk menjalankan aplikasi secara langsung.
dotnet exec
memerlukan jalur ke dll proyek pengujian bawaan.
dotnet exec Contoso.MyTests.dll
atau
dotnet Contoso.MyTests.dll
Nota
Menyediakan jalur ke proyek pengujian yang dapat dieksekusi (*.exe) menghasilkan kesalahan:
Error:
An assembly specified in the application dependencies manifest
(Contoso.MyTests.deps.json) has already been found but with a different
file extension:
package: 'Contoso.MyTests', version: '1.0.0'
path: 'Contoso.MyTests.dll'
previously found assembly: 'S:\t\Contoso.MyTests\bin\Debug\net8.0\Contoso.MyTests.exe'
Untuk informasi selengkapnya tentang dotnet exec
, lihat dotnet exec.
Gunakan dotnet test
Microsoft.Testing.Platform
menawarkan lapisan kompatibilitas dengan vstest.console.exe
dan dotnet test
memastikan Anda dapat menjalankan pengujian seperti sebelumnya sambil mengaktifkan skenario eksekusi baru.
dotnet test Contoso.MyTests.dll
Pilihan
Daftar di bawah ini hanya menjelaskan opsi platform. Untuk melihat opsi tertentu yang dibawa oleh setiap ekstensi, lihat halaman dokumentasi ekstensi atau gunakan opsi --help
.
@
Menentukan nama file respons. Nama file respons harus segera mengikuti karakter @ tanpa spasi kosong antara karakter @ dan nama file respons.
Opsi dalam file respons ditafsirkan seolah-olah ada di tempat tersebut di baris perintah. Setiap argumen dalam file respons harus dimulai dan berakhir pada baris yang sama. Anda tidak dapat menggunakan karakter garis miring terbalik () untuk menggabungkan baris. Menggunakan file respons membantu untuk perintah yang sangat panjang yang mungkin melebihi batas terminal. Anda dapat menggabungkan file respons dengan argumen baris perintah secara langsung. Misalnya:
./TestExecutable.exe @"filter.rsp" --timeout 10s
di mana filter.rsp dapat memiliki konten berikut:
--filter "A very long filter"
Atau satu file rsp dapat digunakan untuk menentukan batas waktu dan filter sebagai berikut:
./TestExecutable.exe @"arguments.rsp"
--filter "A very long filter" --timeout 10s
--config-file
Menentukan file testconfig.json.
--diagnostic
Mengaktifkan pembuatan log diagnostik. Tingkat log default adalah
Trace
. File ditulis dalam direktori output dengan format nama berikut,log_[MMddHHssfff].diag
.--diagnostic-filelogger-synchronouswrite
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.
--diagnostic-output-directory
Direktori keluaran untuk pencatatan diagnostik, jika tidak ditentukan, file akan dihasilkan dalam direktori default TestResults.
--diagnostic-output-fileprefix
Awalan untuk nama file log. Bawaan ke
"log_"
.--diagnostic-verbosity
Menentukan tingkat verbositas saat sakelar
--diagnostic
digunakan. Nilai yang tersedia adalahTrace
,Debug
,Information
,Warning
,Error
, atauCritical
.--exit-on-process-exit
Hentikan proses pengujian jika proses dependen berhenti. PID harus disediakan.
--help
Mencetak deskripsi cara menggunakan perintah.
--ignore-exit-code
Memungkinkan beberapa kode keluar bukan nol diabaikan atau sebaliknya dikembalikan sebagai
0
. Untuk informasi selengkapnya, lihat Abaikan kode keluar tertentu.--info
Menampilkan informasi tingkat lanjut tentang Aplikasi Uji .NET seperti:
- Platform tersebut.
- Lingkungan.
- Setiap penyedia baris perintah terdaftar, seperti
name
,version
,description
, danoptions
. - Setiap alat terdaftar, seperti
command
,name
,version
,description
, dan semua penyedia baris perintah.
Fitur ini digunakan untuk memahami ekstensi yang akan mendaftarkan opsi baris perintah yang sama atau perubahan opsi yang tersedia antara beberapa versi ekstensi (atau platform).
--list-tests
Mencantumkan pengujian yang tersedia. Pengujian tidak akan dijalankan.
--maximum-failed-tests
Menentukan jumlah maksimum kegagalan pengujian yang, ketika tercapai, akan menghentikan eksekusi pengujian. Dukungan untuk sakelar ini memerlukan pengembang kerangka kerja untuk mengimplementasikan kemampuan
IGracefulStopTestExecutionCapability
. Kode keluar saat mencapai jumlah kegagalan pengujian adalah 13. Untuk informasi selengkapnya, lihat kode keluar Microsoft.Testing.Platform di dan.Nota
Fitur ini tersedia di Microsoft.Testing.Platform yang dimulai dengan versi 1.5.
--minimum-expected-tests
Menentukan jumlah minimum pengujian yang diharapkan untuk dijalankan. Secara default, setidaknya satu pengujian diharapkan berjalan.
--results-directory
Direktori tempat hasil pengujian akan ditempatkan. Jika direktori yang ditentukan tidak ada, direktori tersebut akan dibuat. Defaultnya adalah
TestResults
di direktori yang berisi aplikasi pengujian.--timeout
Batas waktu eksekusi pengujian global. Mengambil satu argumen sebagai string dalam format
<value>[h|m|s]
di mana<value>
mengambang.
Integrasi MSBuild
Paket NuGet Microsoft.Testing.Platform.MSBuild menyediakan berbagai integrasi untuk Microsoft.Testing.Platform
dengan MSBuild:
- Dukungan untuk
dotnet test
. Untuk informasi selengkapnya, lihat Pengujian dengan pengujian dotnet. - Dukungan untuk
ProjectCapability
diperlukan olehVisual Studio
danVisual Studio Code
Test Explorers. - Pembuatan otomatis titik masuk (metode
Main
). - Pembuatan otomatis file konfigurasi.
Nota
Integrasi ini berfungsi dengan cara transitif (proyek yang mereferensikan proyek lain yang merujuk paket ini akan berperilaku seolah-olah mereferensikan paket) dan dapat dinonaktifkan melalui properti MSBuild IsTestingPlatformApplication
.