Vue d’ensemble de MSTest

MSTest, Microsoft Testing Framework, est une infrastructure de test open source et multiplateforme entièrement prise en charge pour les applications .NET. Il vous permet d’écrire et d’exécuter des tests et fournit des suites de tests avec intégration à Visual Studio et Visual Studio Code Test Explorers, à l’interface CLI .NET et à de nombreux pipelines CI.

MSTest est hébergé sur GitHub et fonctionne avec toutes les cibles .NET prises en charge.

Fonctionnalités clés

MSTest fournit des fonctionnalités de test complètes :

  • Tests pilotés par les données : exécutez des tests avec plusieurs entrées à l'aide de DataRow, DynamicData et de sources de données externes.
  • Gestion du cycle de vie des tests : configuration et nettoyage au niveau de l’assembly, de la classe et des tests.
  • Exécution parallèle : exécutez des tests simultanément pour réduire le temps d’exécution.
  • Organisation de test : catégoriser, hiérarchiser et filtrer des tests avec des attributs de métadonnées.
  • Analyseurs de code : détectez les problèmes courants et appliquez les meilleures pratiques au moment de la compilation.
  • Assertions : méthodes d’assertion complètes pour valider les résultats.

Plateformes prises en charge

MSTest prend en charge un large éventail de plateformes .NET et de frameworks cibles. Le tableau suivant récapitule la prise en charge de la plateforme et les considérations spéciales :

Platform Versions cibles de .NET Framework Prise en charge du threading Attributs spéciaux Remarques
.NET .NET 8+ Parallélisation complète Tous les attributs Recommandé pour les nouveaux projets
infrastructure .NET 4.6.2+ Parallélisation complète Tous les attributs Prise en charge complète des fonctionnalités
UWP UAP 10, .NET 9+ avec UAP Thread d’interface utilisateur UITestMethod Utilisez VSTest. Exemple de .NET UWP moderne requis <UseUwp>true</UseUwp>; voir l’exemple UWP
WinUI 3 .NET 8+ Thread d’interface utilisateur UITestMethod Nécessite SDK d'application Windows ; consultez Tester les applications WinUI 3 avec MSTest et MTP
AOT natif .NET 8+ Parallélisation complète La plupart des attributs Ensemble de fonctionnalités limité ; Voir l’exemple AOT natif
Navigateur WebAssembly hôte personnalisé .NET 10+ Monothread Limité Microsoft personnalisées. La prise en charge de l’hôte Testing.Platform commence par MSTest 4.4

Points à prendre en compte spécifiques à la plateforme

Tests de la plateforme Windows universelle (UWP)

Les tests UWP s’exécutent dans le conteneur d’application UWP et nécessitent le thread d’interface utilisateur pour de nombreuses opérations :

[TestClass]
public class UwpTests
{
    [UITestMethod]
    public void TestUwpControl()
    {
        // Test runs on UI thread
        var button = new Button();
        Assert.IsNotNull(button);
    }
}

Utilisez VSTest pour UWP classique et les .NET UWP modernes, car les deux s’exécutent dans un AppContainer. Pour obtenir une configuration moderne .NET UWP, consultez l’exemple BlankUwpNet9App.

Test de WinUI 3

Les tests WinUI 3 nécessitent également l’accès aux threads d’interface utilisateur pour tester les composants visuels :

[TestClass]
public class WinUITests
{
    [UITestMethod]
    public void TestWinUIControl()
    {
        // Test runs on UI thread
        var window = new MainWindow();
        Assert.IsNotNull(window);
    }
}

Pour configurer des tests WinUI 3 non empaquetés ou empaquetés de confiance totale, consultez Tester des applications WinUI 3 avec MSTest et MTP.

À compter de MSTest 4.4, Microsoft. Testing.Platform prend également en charge les applications de test WinUI non empaquetées. VSTest ne prend pas en charge ce scénario. Pour plus d’informations sur l’installation, consultez l’exemple WinUI non empaqueté.

AOT natif

La compilation AOT native est prise en charge, avec certaines limitations dues aux capacités de réflexion réduites. Utilisez des générateurs sources lorsque cela est possible et testez vos scénarios AOT avec l’exemple NativeAotRunner.

Navigateur WebAssembly

À compter de MSTest 4.4, un hôte WebAssembly de navigateur personnalisé .NET 10 peut appeler AddMSTest pour exécuter des tests à partir d’un assembly MSTest référencé. Dans le projet hôte, définissez EnableMSTestRunnertrue sur et GenerateTestingPlatformEntryPoint sur false lequel l’hôte personnalisé possède le point d’entrée de l’application. Conservez MSTest et Microsoft. Les versions du package Testing.Platform sont alignées.

Sur un runtime WebAssembly à thread unique, MSTest ne peut pas interrompre les tests de délai d’attente et les options de lancement du débogueur ne sont pas prises en charge. Pour un hôte complet, consultez l’exemple BrowserPlayground.

Prise en charge du threading STA

Pour les scénarios d’interopérabilité COM Windows, MSTest fournit les attributs STATestClass et STATestMethod pour exécuter des tests dans un appartement avec un thread unique. Pour plus d’informations sur le threading STA, notamment la prise en charge des continuations asynchrones avec UseSTASynchronizationContext, consultez les attributs de threading.

Exécuteurs de tests

MSTest prend en charge deux plateformes d’exécution de test :

  • Microsoft.Testing.Platform (MTP) : plateforme de test moderne recommandée avec des performances et une extensibilité améliorées.
  • VSTest : plateforme de test d’origine et par défaut pour .NET.

Pour les nouveaux projets, nous vous recommandons d’utiliser MTP avec MSTest.Sdk.

Politique de support MSTest

Depuis la version v3.0.0, MSTest suit strictement le contrôle de version sémantique.

L’équipe MSTest prend uniquement en charge la dernière version publiée et encourage vivement les utilisateurs à toujours effectuer une mise à jour vers la dernière version pour tirer parti des améliorations et des correctifs de sécurité. Les versions préliminaires ne sont pas prises en charge par Microsoft, mais sont proposées pour les tests publics avant la version finale.

Historique des versions

MSTest a subi une évolution significative entre les principales versions :

  • MSTest v1 : Infrastructure de test Visual Studio d’origine
  • MSTest v2 : Première version open source avec prise en charge multiplateforme
  • MSTest v3 : Réécriture moderne avec une architecture et des fonctionnalités améliorées
  • MSTest v4 : Version actuelle avec fonctionnalités améliorées

Note

MSTest 4.4 est en cours de développement à compter d’août 2026. Les fonctionnalités marquées comme introduites dans MSTest 4.4 nécessitent une préversion jusqu’à la publication de la version 4.4.0.

Pour plus d’informations sur toutes les versions, consultez le journal des modifications MSTest.

Si vous effectuez une mise à niveau à partir d’une version antérieure, consultez les guides de migration :

Changements cassants

L'équipe MSTest examine attentivement et minimise les changements critiques. Lorsque des modifications avec rupture de compatibilité sont nécessaires, l’équipe utilise les annonces GitHub et étiquettes « breaking change » sur les tickets afin d’informer la communauté en amont, laissant aux utilisateurs le temps de fournir des retours et de soulever des préoccupations avant la publication des changements.

Étapes suivantes