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.
MSTest, Microsoft Testing Framework, adalah kerangka kerja pengujian sumber terbuka, dan lintas platform yang didukung penuh untuk aplikasi .NET. Ini memungkinkan Anda untuk menulis dan menjalankan pengujian, dan menyediakan suite pengujian dengan integrasi ke Visual Studio dan Visual Studio Code Test Explorers, .NET CLI, dan banyak alur CI.
MSTest dihosting di GitHub dan berfungsi dengan semua target .NET yang didukung.
Fitur utama
MSTest menyediakan kemampuan pengujian komprehensif:
-
Pengujian berbasis data: Jalankan pengujian dengan beberapa input menggunakan
DataRow, ,CombinatorialDataDynamicData, dan sumber data eksternal. - Manajemen siklus hidup pengujian: Penyiapan dan pembersihan di tingkat perakitan, kelas, dan pengujian.
- Eksekusi paralel: Jalankan pengujian secara bersamaan untuk mengurangi waktu eksekusi.
- Organisasi pengujian: Mengategorikan, memprioritaskan, dan memfilter pengujian dengan atribut metadata.
- Penganalisis kode: Mendeteksi masalah umum dan menerapkan praktik terbaik pada waktu kompilasi.
- Pernyataan: Metode pernyataan komprehensif untuk memvalidasi hasil.
Platform yang didukung
MSTest mendukung berbagai platform .NET dan kerangka kerja target. Tabel berikut ini meringkas dukungan platform dan pertimbangan khusus:
| Platform | Kerangka kerja target | Dukungan utas | Atribut khusus | Catatan |
|---|---|---|---|---|
| .NET | .NET 8+ | Paralelisasi penuh | Semua atribut | Direkomendasikan untuk proyek baru |
| kerangka kerja .NET | 4.6.2+ | Paralelisasi penuh | Semua atribut | Dukungan fitur lengkap |
| UWP | UAP 10, .NET 10+ dengan alat bantu UWP | Utas UI | UITestMethod |
MSTest 4.5 dan MTP 2.5 mendukung UWP klasik dan modern melalui sidecar model aplikasi MSTest.Sdk |
| WinUI 3 | .NET 8+ | Utas UI | UITestMethod |
MTP mendukung host yang dikemas, dibongkar, dan AppContainer; lihat Menguji aplikasi UWP dan WinUI 3 dengan MSTest dan MTP |
| Otomatisasi antarmuka pengguna desktop Windows | target .NET 8+ Windows | STA | STATestClass |
Pratinjau MSTest 4.5 dapat meluncurkan aplikasi Win32, Formulir Windows, dan WPF yang tidak dipaketkan dan mengekspos jendela melalui Windows UI Automation |
| Native AOT | .NET 8+ | Paralelisasi penuh | Sebagian besar atribut | Set fitur terbatas; lihat Sampel AOT asli |
| Browser WebAssembly | host khusus .NET 10+ | Utas tunggal | Limited | Dukungan eksekusi MTP dimulai dengan MSTest 4.4 |
| WASI WebAssembly | host khusus .NET 10+ | Utas tunggal | Limited | Dukungan eksekusi MTP dimulai dengan MSTest 4.4 |
Pertimbangan khusus platform
Pengujian UWP
Pengujian UWP berjalan di kontainer aplikasi UWP dan memerlukan utas UI untuk banyak operasi:
[TestClass]
public class UwpTests
{
[UITestMethod]
public void TestUwpControl()
{
// Test runs on UI thread
var button = new Button();
Assert.IsNotNull(button);
}
}
Dimulai dengan MSTest 4.5 dan MTP 2.5, gunakan MSTest.Sdk untuk menjalankan pengujian UWP klasik dan .NET UWP modern melalui MTP. Sidecar dengan kepercayaan penuh mendaftarkan dan mengaktifkan paket, memberikan otorisasi untuk SID paket aplikasi yang tepat bagi komunikasi MTP, serta menyalin artefak hasil dari penyimpanan paket.
Modern UWP memerlukan .NET 10, UseUwp, dan toolchain build UWP di Visual Studio. UWP klasik tetap mempertahankan struktur proyek yang ada uap10.0. Untuk konfigurasi lengkap, lihat sampel UWP modern dan sampel UWP klasik.
Pengujian WinUI 3
Pengujian WinUI 3 juga memerlukan akses utas UI untuk menguji komponen visual:
[TestClass]
public class WinUITests
{
[UITestMethod]
public void TestWinUIControl()
{
// Test runs on UI thread
var window = new MainWindow();
Assert.IsNotNull(window);
}
}
MTP mendukung aplikasi uji WinUI 3 full-trust yang dikemas, yang tidak dikemas, dan yang dikonfigurasi dengan AppContainer. MSTest.Sdk menjalankan aplikasi tanpa paket secara langsung dan menggunakan sidecar model aplikasinya untuk meregistrasikan dan mengaktifkan aplikasi berpaket.
Dukungan AppContainer memerlukan MSTest 4.5 dan MTP 2.5 atau yang lebih baru. VSTest tidak mendukung WinUI 3 yang tidak dikemas. Untuk detail penyiapan, lihat Menguji aplikasi UWP dan WinUI 3 dengan MSTest dan MTP.
Windows otomatisasi antarmuka pengguna desktop
Paket ini MSTest.Windows.UIAutomation mengintegrasikan manajemen siklus hidup MSTest dengan Windows UI Automation untuk aplikasi Win32, Formulir Windows, dan WPF yang tidak dikemas. Untuk penyiapan, batasan, dan kelas dasar ApplicationTest serta WindowTest, lihat Menguji aplikasi desktop Windows dengan MSTest UI Automation.
Kompilasi AOT Asli
Kompilasi AOT asli didukung dengan beberapa batasan karena kemampuan refleksi yang berkurang. Gunakan generator sumber jika memungkinkan dan uji skenario AOT Anda dengan sampel NativeAotRunner.
Peramban dan WASI WebAssembly
MSTest 4.4 mendukung browser .NET 10 kustom atau host WASI WebAssembly. Untuk menjalankan pengujian dari rakitan MSTest yang dirujuk, panggil AddMSTest. Dalam proyek host, atur EnableMSTestRunner ke true dan GenerateTestingPlatformEntryPoint ke false. Jaga agar versi paket MSTest dan MTP tetap selaras.
Pada runtime WebAssembly utas tunggal, MSTest tidak dapat menghentikan secara paksa pengujian yang melewati batas waktu. Penantian debugger tidak didukung di browser atau WASI, dan browser tidak mendukung opsi peluncuran debugger.
MTP dapat mengalirkan data TRX dan melaporkan artefak berkas pengujian dan sesi melalui sistem berkas virtual WebAssembly milik host dan saluran artefak. Azure DevOps penerbitan hanya berfungsi ketika host menyediakan akses HTTP yang didukung dan autentikasi alur yang diperlukan. Fitur-fitur ini tidak memberikan sistem file host atau akses jaringan yang tidak terbatas.
Untuk host browser lengkap, lihat sampel BrowserPlayground.
Dukungan penanganan utas STA
Untuk skenario interop Windows COM, MSTest menyediakan atribut STATestClass dan STATestMethod untuk menjalankan pengujian di dalam apartemen berulir tunggal. Untuk detail tentang threading STA, termasuk dukungan kelanjutan asinkron dengan UseSTASynchronizationContext, lihat Atribut threading.
Penguji Tes
MSTest mendukung dua platform eksekusi pengujian:
- Microsoft.Testing.Platform (MTP): Platform pengujian modern yang direkomendasikan dengan peningkatan performa dan ekstensibilitas.
- VSTest: Platform pengujian asli dan default untuk .NET.
Untuk proyek baru, sebaiknya gunakan MTP dengan MSTest.Sdk.
Kebijakan dukungan MSTest
Sejak v3.0.0, MSTest benar-benar mengikuti penerapan versi semantik.
Tim MSTest hanya mendukung versi terbaru yang dirilis dan sangat mendorong pengguna untuk selalu memperbarui ke versi terbaru untuk mendapatkan manfaat dari peningkatan dan patch keamanan. Rilis pratinjau tidak didukung oleh Microsoft tetapi ditawarkan untuk pengujian publik sebelum rilis akhir.
Riwayat versi
MSTest telah mengalami evolusi yang signifikan di seluruh versi utama:
- MSTest v1: Kerangka kerja pengujian Visual Studio asli
- MSTest v2: Rilis sumber terbuka pertama dengan dukungan lintas platform
- MSTest v3: Penulisan ulang modern dengan arsitektur dan fitur yang ditingkatkan
- MSTest v4: Versi saat ini dengan fitur yang ditingkatkan
Note
MSTest 4.5 sedang dikembangkan per Oktober 2026. Fitur yang ditandai sebagai diperkenalkan dalam MSTest 4.5 memerlukan build pratinjau hingga versi 4.5.0 dirilis.
Untuk mendapatkan rincian semua rilis, lihat log perubahan MSTest.
Jika Anda memutakhirkan dari versi yang lebih lama, lihat panduan migrasi:
Perubahan mendasar
Tim MSTest dengan hati-hati meninjau dan meminimalkan perubahan yang berpotensi merusak. Ketika perubahan yang mengakibatkan perubahan besar diperlukan, tim menggunakan Pengumuman GitHub dan label perubahan melanggar pada isu untuk memberi tahu komunitas lebih awal, memberi pengguna waktu untuk memberikan umpan balik dan menimbulkan kekhawatiran sebelum perubahan dirilis.