Bagikan melalui


Gambaran umum Microsoft.Testing.Platform

Microsoft.Testing.Platform adalah alternatif ringan dan portabel untuk VSTest untuk menjalankan pengujian di semua konteks, termasuk integrasi berkelanjutan (CI) pipelines, 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.

Saran

Jika Anda memerlukan bantuan untuk memilih antara VSTest dan Microsoft.Testing.Platform, mulailah dengan gambaran umum platform Pengujian.

Gunakan artikel ini ketika Anda sudah memutuskan untuk menggunakan Microsoft.Testing.Platform dan Anda ingin memahami model, kemampuan, dan perilaku operasionalnya.

Microsoft.Testing.Platform adalah open source. Anda dapat menemukan kode Microsoft.Testing.Platform di repositori microsoft/testfx GitHub.

Mulai di sini

Gunakan jalur berikut, berdasarkan apa yang Anda butuhkan selanjutnya:

Prinsip Microsoft.Testing.Platform

Platform pengujian baru ini dibangun berdasarkan pengalaman tim .NET Developer Experience Testing dan bertujuan untuk mengatasi tantangan yang dihadapi sejak rilis .NET Core pada tahun 2016. Meskipun ada tingkat kompatibilitas yang tinggi antara .NET Framework dan .NET Core/.NET, beberapa fitur utama seperti sistem plugin dan berbagai bentuk baru yang mungkin dalam kompilasi .NET telah membuatnya menjadi kompleks untuk dikembangkan 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, tidak membuat konteks terisolasi seperti AppDomain atau AssemblyLoadContext, 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.

  • DependensiZero: Inti platform adalah rakitan .NET tunggal, Microsoft.Testing.Platform.dll, yang tidak memiliki dependensi 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 dalam semua jenis aplikasi .NET. Ini memungkinkan Anda menjalankan pengujian dalam konteks khusus, seperti perangkat atau browser, di mana mungkin ada batasan.

  • Dukung semua platform .NET: Mendukung platform .NET saat ini dan di masa mendatang, 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 "mengorkestrasi" uji coba, daripada memberikan detail implementasi tentang bagaimana 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

Kerangka target yang didukung

Microsoft.Testing.Platform mendukung .NET (.NET 8 dan yang lebih baru), .NET Framework (versi 4.6.2 dan yang lebih baru), dan menargetkan NETStandard 2.0 untuk kompatibilitas maksimum dengan runtime lainnya.

Menjalankan dan memperbaiki pengujian

Untuk panduan terperinci tentang menjalankan dan men-debug proyek pengujian MTP dari CLI, Visual Studio, Visual Studio Code, dan CI pipelines, lihat Jalankan dan debug tes.

Opsi

Untuk daftar lengkap opsi baris perintah platform dan ekstensi, lihat Referensi opsi CLI Microsoft.Testing.Platform.

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 oleh Visual Studio dan Visual Studio Code dalam Test Explorers.
  • Pembuatan otomatis titik masuk (metode Main).
  • Pembuatan otomatis file konfigurasi.
  • Deteksi otomatis dan pendaftaran paket ekstensi yang diinstal.

Ketika paket ini berjalan (default untuk runner MSTest, NUnit, dan xUnit), menginstal paket NuGet ekstensi sudah cukup — ekstensi akan terdaftar secara otomatis tanpa perubahan kode. Jika Anda menonaktifkan titik masuk yang dihasilkan secara otomatis dengan mengatur <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>, Anda harus secara manual mendaftarkan ekstensi dalam metode Main Anda. Setiap halaman ekstensi mendokurasikan panggilan pendaftaran manualnya.

Nota

Integrasi ini bekerja dengan cara transitif (project yang mereferensikan project lain yang mereferensikan paket ini akan berperilaku seolah-olah mereferensikan paket) dan dapat dinonaktifkan melalui properti MSBuild IsTestingPlatformApplication.

Lihat juga