Gambaran umum MSTest

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.

Langkah selanjutnya