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 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 |
| 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 mulai hadir di pratinjau MSTest 4.4 |
| WASI WebAssembly | .NET 10+ host kustom | Utas tunggal | Limited | Dukungan eksekusi MTP mulai tersedia di pratinjau 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.
Peramban dan WASI WebAssembly
Pratinjau 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.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.