Partager via


Tester les applications WinUI créées avec le Windows App SDK

Dans cette rubrique, nous fournissons des recommandations pour tester et valider des fonctionnalités dans les applications créées avec les fonctionnalités Windows App SDK à l’aide de WinUI 3 fonctionnalités d’interface utilisateur (IU). Le test est un élément essentiel du processus de développement d’applications : il vous aide à intercepter les bogues tôt, à maintenir la qualité du code et à garantir une expérience utilisateur fiable à mesure que votre application évolue. En incorporant des tests unitaires dans votre flux de travail, vous pouvez refactoriser en toute confiance du code, ajouter de nouvelles fonctionnalités et expédier des mises à jour sachant que les fonctionnalités existantes continuent de fonctionner comme prévu.

Tutoriel : Créer un projet de test unitaire WinUI 3.

La plupart des types d’objets sous les espaces de noms Microsoft.UI.Xaml doivent être utilisés à partir d’un thread d’interface utilisateur dans un processus d’application XAML. (Pour en savoir plus sur le test des applications créées avec Windows App SDK sans utilisation de WinUI 3, voir la section suivante, Tester les fonctionnalités non-WinUI.)

Note

Nous vous recommandons de refactoriser tout code à tester en l’extrayant du projet d’application principal et en le plaçant dans un projet de bibliothèque. Votre projet d’application et votre projet de test unitaire peuvent ensuite référencer ce projet de bibliothèque. Cette section explique comment créer des tests unitaires pour les applications WinUI 3 dans Visual Studio à l’aide des modèles de projet de test unitaire intégrés.

Note

L’application de test unitaire décrite ici est écrite dans le contexte d’une application WinUI 3. Cela est nécessaire pour tous les tests qui exécutent du code nécessitant le runtime XAML. Ce projet crée un thread d’interface utilisateur XAML et exécute les tests.

Dans ce tutoriel, vous allez apprendre à :

  • Créez un projet WinUI Unit Test App dans Visual Studio.
  • Utilisez l’explorateur Visual Studio Test.
  • Ajoutez un projet de bibliothèque de classes WinUI à des fins de test.
  • Exécutez des tests avec l’Explorateur de tests Visual Studio.

Prerequisites

Vous devez avoir Visual Studio installé et configuré pour le développement WinUI. Consultez démarrage rapide : Configurer votre environnement et créer un projet WinUI 3.

Créer un projet d’application de test unitaire WinUI

Pour commencer, créez un projet de test unitaire. Le type de projet est fourni avec tous les fichiers de modèle dont vous avez besoin.

  1. Ouvrez Visual Studio et sélectionnez Créer un nouveau projet dans la fenêtre Démarrer.

    Screenshot de la fenêtre de démarrage Visual Studio.

  2. Dans la fenêtre Créer un nouveau projet, filtrez les projets sur C#, Windows et WinUI, sélectionnez le modèle , puis sélectionnez Next

    Screenshot de la fenêtre Visual Studio « Créer un projet ».

  3. [Facultatif] Dans la fenêtre Configurer votre nouveau projet, modifiez le Nom du projet, le Nom de la solution (décochez Placer la solution et le projet dans le même répertoire) et l’Emplacement de votre projet.

  4. Cliquez sur Créer.

Exécuter des tests avec l’Explorateur de tests

Lorsque vous créez le projet de test, vos tests apparaissent dans l’Explorateur de tests, qui permet d'exécuter vos tests unitaires. Vous pouvez également regrouper des tests en catégories, filtrer la liste de tests, créer, enregistrer et exécuter des playlists de tests, déboguer des tests unitaires et (dans Visual Studio Entreprise) analyser la couverture du code.

Le fichier UnitTests.cs contient le code source des tests unitaires utilisés par l’Explorateur de tests. Par défaut, les exemples de tests de base présentés ici sont créés automatiquement :

namespace WinUITest1
{
   [TestClass]
   public class UnitTest1
   {
      [TestMethod]
      public void TestMethod1()
      {
         Assert.AreEqual(0, 0);
      }

      // Use the UITestMethod attribute for tests that need to run on the UI thread.
      [UITestMethod]
      public void TestMethod2()
      {
         var grid = new Grid();
         Assert.AreEqual(0, grid.MinWidth);
      }
   }
}
  1. Si vous ne l’avez pas déjà fait, générez votre solution. Cela permet Visual Studio de « découvrir » tous les tests disponibles.

  2. Ouvrez l’Explorateur de tests. S’il n’est pas visible, ouvrez le menu Test, puis choisissez Explorateur de tests (ou appuyez sur Ctrl + E, T).

    Screenshot du menu Test dans Visual Studio.

  3. Consultez les tests. Dans la fenêtre Explorateur de tests, développez tous les nœuds (seuls les exemples de tests seront présents à ce stade).

    Capture d'écran de la fenêtre Explorateur de tests dans Visual Studio affichant les tests d’exemple par défaut.

  4. Exécutez les tests.

    • Cliquez avec le bouton droit sur les nœuds de tests individuels, puis sélectionnez Exécuter.
    • Sélectionnez un test, puis appuyez sur le bouton Lecture ou sur Ctrl + R, T.
    • Appuyez sur le bouton Exécuter tous les tests dans l’affichage ou appuyez sur Ctrl + R, V.

    Screenshot de la fenêtre Explorateur de tests dans Visual Studio affichant le menu contextuel de test avec la commande Exécuter mise en surbrillance.

  5. Examinez les résultats. Une fois les tests terminés, les résultats sont affichés dans la fenêtre Explorateur de tests.

    Screenshot de la fenêtre Explorateur de tests dans Visual Studio affichant les résultats de l’exécution de test.

Ajouter un projet de bibliothèque de classes à des fins de test

  1. Ajoutez un projet à la solution de test unitaire. Dans le Solution Explorer, cliquez avec le bouton droit sur la solution, puis sélectionnez Add -> Nouveau projet... .

    Capture d'écran du menu contextuel Solution avec Ajouter\/Nouveau projet mis en surbrillance dans Visual Studio.

  2. Pour cet exemple, ajoutez un projet de bibliothèque de classes WinUI 3. Dans la fenêtre Nouveau projet, filtrez sur C#/Windows/WinUI, puis sélectionnez Bibliothèque de classesWinUI.

    Screenshot de la fenêtre Nouveau projet avec la bibliothèque de classes WinUI mise en surbrillance dans Visual Studio.

  3. Sélectionnez Suivant et entrez un nom pour le projet (pour cet exemple, nous utilisons WinUIClassLibrary1) et appuyez sur Créer.

    Screenshot du nouveau projet « Bibliothèque de classes WinUI » mis en surbrillance dans le Solution Explorer et le fichier Class1.cs ouvert dans l'éditeur de code.

  4. Ajoutez un nouveau UserControl au projet. Dans le Solution Explorer, cliquez avec le bouton droit sur le projet de bibliothèque de classes WinUI 3 que vous venez d’ajouter et sélectionnez Add -> Nouvel élément dans le menu contextuel.

    Capture d'écran du menu contextuel de Solution avec Ajouter\/Nouvel Élément mis en surbrillance dans Visual Studio.

  5. Dans la fenêtre Ajouter un nouvel élément , sélectionnez le nœud WinUI dans la liste des éléments installés , puis choisissez Contrôle utilisateur dans les résultats. Nommez le contrôle UserControl1.

    Screenshot de la fenêtre Ajouter un nouvel élément avec WinUI\/User Control (WinUI) mis en surbrillance dans Visual Studio.

  6. Ouvrez le fichier de code sous-jacent UserControl1.xaml.cs. Pour cet exemple, nous ajoutons une nouvelle méthode publique appelée GetSeven qui retourne simplement un entier.

    namespace WinUICLassLibrary1
    {
      public sealed partial class UserControll : UserControl
      {
         public UserControl1()
         {
             this.InitializeComponent();
         }
    
         public int GetSeven()
         {
             return 7;
         }
      }
    }
    
  7. Définissez le projet bibliothèque de classes WinUI 3 comme dépendance du projet de test unitaire pour permettre l’utilisation de types à partir du projet de bibliothèque de classes WinUI 3. Dans Solution Explorer, sous le projet de bibliothèque de classes, cliquez avec le bouton droit sur Dependencies et sélectionnez Add Project Reference.

    Screenshot du menu contextuel Dépendances avec l’option Ajouter une référence de projet mise en surbrillance dans Visual Studio.

    Sélectionnez l’élément WinUIClassLibrary1 dans la liste Projets .

    Capture d’écran de la boîte de dialogue Gestionnaire de référence avec le projet « WinUIClassLibrary1 » sélectionné.

  8. Créez une méthode de test dans UnitTests.cs. Comme ce cas de test nécessite qu’un thread d’interface utilisateur XAML s’exécute, marquez-le avec l’attribut [UITestMethod] au lieu de l’attribut standard [TestMethod] .

    [UITestMethod]
    public void TestUserControl1()
    {
       WinUIClassLibrary1.UserControl1 userControl1 = new WinUIClassLibrary1.UserControl1();
       Assert.AreEqual(7, userControl1.GetSeven());
    }
    

    Cette nouvelle méthode de test apparaît désormais dans l’Explorateur de tests comme l’un de vos tests unitaires.

    Screenshot de la fenêtre Explorateur de tests dans Visual Studio affichant les exemples de tests par défaut avec le nouveau test unitaire.

  9. Exécutez les tests.

  • Cliquez avec le bouton droit sur le nouveau nœud de test et sélectionnez Exécuter.
  • Sélectionnez le nouveau test, puis appuyez sur le bouton Lecture ou appuyez sur Ctrl + R, T.
  • Appuyez sur le bouton Exécuter tous les tests dans l’affichage ou appuyez sur Ctrl + R, V.

Screenshot de la fenêtre Explorateur de tests dans Visual Studio affichant une exécution de test terminée des exemples de tests par défaut et le nouveau test unitaire.

Test de fonctionnalités non WinUI

Dans de nombreux cas, une application inclut des fonctionnalités qui ne dépendent pas des types Microsoft.UI.Xaml, mais qui ont quand même besoin de tests. Différents outils sont disponibles pour tester le code .NET, notamment MSTest, NUnit et xUnit. Pour plus d’informations sur le test des applications .NET, consultez Testing dans .NET.

Dans Visual Studio, vous pouvez créer un nouveau projet pour l’un de ces outils de test en cliquant avec le bouton droit sur votre solution dans l’Explorateur de solutions, en sélectionnant Add -> Nouveau projet dans le menu contextuel, en choisissant C# à partir du sélecteur Toutes les langues/Windows et Test à partir du sélecteur Tous les types de projets, puis en sélectionnant l’outil de test approprié dans la liste (Projet de test MSTest, Projet de test NUnit ou Projet de test xUnit).

Lors de la création d’un projet MSTest, NUnit ou xUnit qui fait référence à un projet WinUI 3, vous devez :

  1. Mettre à jour le TargetFramework dans le fichier .csproj de votre projet de test. Cette valeur doit correspondre au TargetFramework du projet WinUI 3. Par défaut, msTest, les projets NUnit et xUnit ciblent la gamme complète de plateformes prises en charge par .NET, mais un projet WinUI 3 prend uniquement en charge Windows et a un TargetFramework plus spécifique.

    Par exemple, si vous ciblez .NET 8, mettez à jour targetFramework du projet de test unitaire de <TargetFramework>net8.0</TargetFramework> vers <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>.

  2. Mettre à jour les RuntimeIdentifiers dans votre projet de test.

    <RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &gt;= 8">win-x86;win-x64;win-arm64</RuntimeIdentifiers>

    <RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &lt; 8">win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>

  3. Ajoutez la propriété suivante au PropertyGroup dans le fichier .csproj de votre projet de test pour vous assurer que le test charge le runtime Windows App SDK : <WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize>

  4. Vérifiez que le runtime Windows App SDK est installé sur la machine exécutant le test. Pour plus d’informations sur le déploiement Windows App SDK, consultez Windows App SDK guide de déploiement pour les applications dépendantes de l’infrastructure empaquetées avec un emplacement externe (ou non empaqueté).

Ressources supplémentaires