Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
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
CombinatorialData,DataRow,DynamicDataet 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 |
| .NET Framework | 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. .NET UWP moderne requiert <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+ | Single-threaded | Limité | La prise en charge de l’exécution de MTP commence par la préversion MSTest 4.4 |
| WASI WebAssembly | hôte personnalisé .NET 10+ | Single-threaded | Limité | La prise en charge de l’exécution de MTP commence par la préversion 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 à confiance totale, empaquetés ou non empaquetés, 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 et WASI WebAssembly
La préversion de MSTest 4.4 prend en charge des hôtes de navigateur .NET 10 ou WASI WebAssembly personnalisés. Pour exécuter des tests à partir d’un assembly MSTest référencé, appelez AddMSTest. Dans le projet hôte, définissez EnableMSTestRunner sur true et GenerateTestingPlatformEntryPoint sur false. Gardez les versions du package MSTest et MTP alignées.
Dans un environnement d’exécution WebAssembly monothread, MSTest ne peut pas arrêter de force un test ayant dépassé le délai d’attente. L’attente du débogueur n’est pas prise en charge dans le navigateur ou avec WASI, et le navigateur ne prend pas en charge les options de lancement du débogueur.
MTP peut transmettre en continu des données TRX et transmettre des artefacts de fichiers de test et de session via le système de fichiers virtuel WebAssembly de l’hôte et son canal d’artefacts. Azure DevOps publication fonctionne uniquement lorsque l’hôte fournit un accès HTTP pris en charge et l’authentification de pipeline requise. Ces fonctionnalités n’accordent pas d’accès illimité au système de fichiers hôte ou au réseau.
Pour un hôte de navigateur 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.