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,DynamicData, 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 9+ dengan UAP | Utas UI | UITestMethod |
Gunakan VSTest. Modern .NET UWP memerlukan <UseUwp>true</UseUwp>; lihat sampel UWP |
| WinUI 3 | .NET 8+ | Utas UI | UITestMethod |
Memerlukan SDK Aplikasi Windows; lihat Menguji aplikasi WinUI 3 dengan MSTest dan MTP |
| AOT Asli | .NET 8+ | Paralelisasi penuh | Sebagian besar atribut | Set fitur terbatas; lihat Sampel AOT asli |
| Browser WebAssembly | .NET 10+ host kustom | Utas tunggal | Limited | Microsoft kustom. Dukungan host Testing.Platform 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);
}
}
Gunakan VSTest untuk UWP klasik dan UWP .NET modern karena keduanya berjalan di AppContainer. Untuk penyiapan UWP .NET modern, lihat sampel BlankUwpNet9App.
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);
}
}
Untuk mengonfigurasi pengujian WinUI 3 kepercayaan penuh yang tidak dipaketkan atau dikemas, lihat Menguji aplikasi WinUI 3 dengan MSTest dan MTP.
Dimulai dengan MSTest 4.4, Microsoft. Testing.Platform juga mendukung aplikasi pengujian WinUI yang tidak dikemas. VSTest tidak mendukung skenario ini. Untuk detail penyiapan, lihat sampel WinUI yang belum dikemas.
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.
Browser WebAssembly
Dimulai dengan MSTest 4.4, host WebAssembly browser .NET 10 kustom dapat memanggil AddMSTest untuk menjalankan pengujian dari rakitan MSTest yang dirujuk. Dalam proyek host, atur EnableMSTestRunner ke true dan GenerateTestingPlatformEntryPoint ke false sehingga host kustom memiliki titik masuk aplikasi. Pertahankan MSTest dan Microsoft. Versi paket Testing.Platform selaras.
Pada runtime WebAssembly berutas tunggal, MSTest tidak dapat mengganggu pengujian timed-out, dan opsi peluncuran debugger tidak didukung. Untuk host 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.4 sedang dikembangkan per Agustus 2026. Fitur yang ditandai sebagai diperkenalkan dalam MSTest 4.4 memerlukan build pratinjau hingga versi 4.4.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.