Gambaran umum Microsoft.Testing.Platform
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 Text Explorer. Microsoft.Testing.Platform disematkan langsung dalam proyek pengujian Anda, dan tidak ada dependensi aplikasi lain, seperti vstest.console
atau dotnet test
diperlukan untuk menjalankan pengujian Anda.
Microsoft.Testing.Platform
sumber terbuka. Anda dapat menemukan Microsoft.Testing.Platform
kode di repositori GitHub microsoft/testfx .
Pilar 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 ada tingkat kompatibilitas tinggi antara .NET Framework dan .NET Core/.NET, beberapa fitur utama seperti plugin-system dan faktor bentuk baru yang mungkin dari kompilasi .NET telah membuatnya kompleks untuk berevolusi atau sepenuhnya mendukung fitur runtime baru dengan 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, itu tidak membuat konteks terisolasi seperti
AppDomain
atauAssemblyLoadContext
, dan tidak menggunakan pemecah refleksi atau perakitan kustom.Pendaftaran ekstensi kompilasi waktu: Ekstensi, seperti kerangka kerja pengujian dan ekstensi dalam/di luar proses, didaftarkan selama waktu kompilasi untuk memastikan determinisme dan untuk memfasilitasi deteksi inkonsistensi.
Dependensi nol: Inti platform adalah satu rakitan .NET,
Microsoft.Testing.Platform.dll
, yang tidak memiliki dependensi selain runtime yang didukung.Dapat dihosting: 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 formulir .NET: Mendukung faktor formulir .NET saat ini dan yang akan datang, termasuk AOT Asli.
Performant: Menemukan keseimbangan yang tepat antara fitur dan titik ekstensi untuk menghindari kembungnya runtime dengan kode non-fundamental. Platform pengujian baru dirancang untuk "mengatur" uji coba, daripada memberikan detail implementasi tentang cara melakukannya.
Cukup dapat diperluas: Platform baru dibangun di atas titik ekstensibilitas untuk memungkinkan penyesuaian maksimum eksekusi 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 pelari MSTest. - NUnit. Di NUnit, dukungan
Microsoft.Testing.Platform
dilakukan melalui pelari NUnit. - 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 men-debug pengujian
Microsoft.Testing.Platform
proyek pengujian dibangun sebagai executable yang dapat dijalankan (atau di-debug) secara langsung. Tidak ada pengujian tambahan yang menjalankan konsol atau perintah. Aplikasi keluar dengan kode keluar bukan nol jika ada kesalahan, seperti biasanya dengan sebagian besar executable. Untuk informasi selengkapnya tentang kode keluar yang diketahui, lihat Kode keluar Microsoft.Testing.Platform.
Penting
Secara default, Microsoft.Testing.Platform
mengumpulkan telemetri. Untuk informasi selengkapnya dan opsi untuk menolak, lihat Telemetri Microsoft.Testing.Platform.
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 digunakan dotnet build
untuk menghasilkan executable, tetapi mungkin ada kasus tepi yang perlu dipertimbangkan, seperti Native AOT.
Menggunakan 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. Penggunaan 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 dotnet run.
Menggunakan 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
or
dotnet Contoso.MyTests.dll
Catatan
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.
Menggunakan 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
Opsi
Daftar di bawah ini hanya menjelaskan opsi platform. Untuk melihat opsi tertentu yang dibawa oleh setiap ekstensi, lihat halaman dokumentasi ekstensi atau gunakan --help
opsi .
--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 output pengelogan diagnostik, jika tidak ditentukan, file dihasilkan dalam direktori TestResults default.
--diagnostic-output-fileprefix
Awalan untuk nama file log. Default ke "log_"
.
--diagnostic-verbosity
Menentukan tingkat verbositas saat sakelar --diagnostic
digunakan. Nilai yang tersedia adalah Trace
, , Information
Debug
, Warning
, Error
, atau Critical
.
--help
Mencetak deskripsi cara menggunakan perintah.
-ignore-exit-code
Memungkinkan beberapa kode keluar bukan nol diabaikan, dan sebaliknya dikembalikan sebagai 0
. Untuk informasi selengkapnya, lihat Mengabaikan kode keluar tertentu.
--info
Menampilkan informasi tingkat lanjut tentang Aplikasi Uji .NET seperti:
- Platform.
- 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.
--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 tidak ada, direktori yang ditentukan akan dibuat. Defaultnya ada TestResults
di direktori yang berisi aplikasi pengujian.
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 integrasi pengujian dotnet. - Dukungan untuk
ProjectCapability
diperlukan olehVisual Studio
danVisual Studio Code
Test Explorers. - Pembuatan otomatis titik masuk (
Main
metode). - Pembuatan otomatis file konfigurasi.
Catatan
Integrasi ini bekerja dengan cara transitif (proyek yang mereferensikan proyek lain yang merujuk paket ini akan berperilaku seolah-olah mereferensikan paket) dan dapat dinonaktifkan melalui IsTestingPlatformApplication
properti MSBuild.