Partager via


Écrire des tests unitaires pour C/C++ dans Visual Studio

Vous pouvez écrire et exécuter vos tests unitaires C++ à l’aide de la fenêtre de l’Explorateur de tests. Il fonctionne comme pour d’autres langues. Pour plus d’informations sur l’utilisation de l’Explorateur de tests, consultez Exécuter des tests unitaires avec l’Explorateur de tests.

Remarque

Certaines fonctionnalités telles que Live Unit Testing, Coded UI Tests et IntelliTest ne sont pas prises en charge pour C++.

Visual Studio inclut ces frameworks de test C++ sans téléchargement supplémentaire requis :

  • Microsoft Unit Testing Framework pour C++
  • Google Test
  • Boost.Test
  • CTest

Vous pouvez utiliser les frameworks installés ou écrire votre propre adaptateur de test pour l’infrastructure que vous souhaitez utiliser dans Visual Studio. Un adaptateur de test intègre des tests unitaires à la fenêtre de l’Explorateur de tests. Plusieurs adaptateurs non-Microsoft sont disponibles sur la Visual Studio Marketplace. Pour plus d’informations, consultez Installer des frameworks de test unitaire.

  • Visual Studio 2017 et versions ultérieures (Professionnel et Entreprise)

    Les projets de test unitaire C++ prennent en charge CodeLens.

  • Visual Studio 2017 et versions ultérieures (toutes les éditions)

    • L’Adaptateur Google Test est inclus comme composant par défaut de la charge de travail Développement Desktop en C++. Il dispose d’un modèle de projet que vous pouvez ajouter à une solution. Cliquez avec le bouton droit sur le nœud de solution dans Explorateur de solutions, puis choisissez Ajouter>nouveau projet dans le menu contextuel pour ajouter le modèle de projet. Il dispose également d’options que vous pouvez configurer à l’aide de Tools>Options. Pour plus d’informations, consultez Guide pratique pour utiliser Google Test dans Visual Studio.

    • Boost.Test est inclus comme composant par défaut de la charge de travail Développement Desktop en C++. Il est intégré à Explorateur de tests, mais n’a actuellement pas de modèle de projet. Vous devez le configurer manuellement. Pour plus d’informations, consultez Guide pratique pour utiliser Boost.Test dans Visual Studio.

    • La prise en charge de CTest est incluse dans le composant Outils CMake pour C++ qui fait partie de la charge de travail Développement Desktop en C++. Pour plus d’informations, consultez Guide pratique pour utiliser CTest dans Visual Studio.

  • Versions antérieures de Visual Studio

    Vous pouvez télécharger l’adaptateur Google Test et les extensions Boost.Test Adapter sur Visual Studio Marketplace. Recherchez-les sur l’adaptateur de test pour Boost.Test et l’adaptateur de test pour Google Test.

Conseil

Vous pouvez également utiliser la commande slash Copilot /tests pour générer des tests unitaires à partir du code. Par exemple, vous pouvez taper /tests using Boost framework pour générer des tests Boost.Test. Pour plus d'informations, consultez Utiliser Barre oblique commandes dans Copilot Chat.

Flux de travail de test de base

Les sections suivantes montrent les étapes de base pour vous familiariser avec les tests unitaires C++. La configuration de base est similaire pour les frameworks Microsoft et Google Test. Boost.Test nécessite de créer manuellement un projet de test.

Créer un projet de test dans Visual Studio 2022

Définissez et exécutez des tests unitaires à l’intérieur d’un ou plusieurs projets de test . Un projet de test crée une application distincte qui appelle le code dans votre exécutable et signale son comportement. Créez des projets de test dans la même solution que le code que vous souhaitez tester.

Pour ajouter un nouveau projet de test à une solution existante :

  1. Cliquez avec le bouton droit sur le nœud Solution dans Explorateur de solutions.
  2. Dans le menu contextuel, choisissez Ajouter>nouveau projet.
  3. Définissez Langage sur C++ et tapez test dans la zone de recherche. La capture d’écran suivante montre les projets de test disponibles lorsque la charge de travail Desktop Development avec C++ et Développement UWP sont installés :

Capture d’écran montrant la fenêtre Ajouter un nouveau projet avec C++ sélectionné dans Visual Studio 2022.

Créer un projet de test dans Visual Studio 2019

Définissez et exécutez des tests à l’intérieur d’un ou plusieurs projets de test. Créez les projets dans la même solution que le code que vous souhaitez tester.

Pour ajouter un nouveau projet de test à une solution existante :

  1. Cliquez avec le bouton droit sur le nœud Solution dans Explorateur de solutions.
  2. Dans le menu contextuel, choisissez Ajouter>nouveau projet.
  3. Définissez Langage sur C++ et tapez test dans la zone de recherche. La capture d’écran suivante montre les projets de test disponibles lorsque le kit de développement Desktop Development avec C++ et le kit de développement UWP sont installés :

Capture d’écran montrant la fenêtre Ajouter un nouveau projet avec C++ sélectionné dans Visual Studio 2019.

Créer des références à d’autres projets dans la solution

Pour activer l’accès aux fonctions du projet sous test, ajoutez une référence au projet dans votre projet de test. Dans Explorateur de solutions, développez votre projet de test. Effectuez un clic droit sur Références, puis sélectionnez Ajouter>Référence. Dans la boîte de dialogue Ajouter une référence, choisissez les projets que vous souhaitez tester.

Capture d’écran montrant la boîte de dialogue Ajouter une référence dans Visual Studio 2022.

Capture d’écran montrant la boîte de dialogue Ajouter une référence dans Visual Studio 2019.

Si le code de test n’exporte pas les fonctions que vous souhaitez tester, ajoutez les fichiers de sortie .obj ou .lib aux dépendances du projet de test. Pour plus d’informations, consultez Pour lier les tests aux fichiers objet ou bibliothèque. N’incluez pas de fichiers objet qui ont une fonction main ou un autre point d’entrée standard tel que wmain, WinMainou DllMain. Lorsque vous ajoutez de nouveaux fichiers sources à votre projet, mettez à jour les dépendances du projet de test pour inclure les fichiers objet correspondants.

Ajouter des directives #include pour les fichiers d’en-tête

Dans votre fichier de test unitaire .cpp, ajoutez une directive #include pour tous les fichiers d’en-tête qui déclarent les types et fonctions que vous souhaitez tester. Tapez #include ", puis IntelliSense s’active pour vous aider à choisir. Répétez l’opération pour les autres en-têtes.

Capture d’écran montrant l’Explorateur de solutions avec une instruction #include avec IntelliSense mettant en surbrillance un fichier d’en-tête dans Visual Studio 2022.

Capture d’écran montrant l’Explorateur de solutions avec une instruction #include avec IntelliSense mettant en surbrillance un fichier d’en-tête dans Visual Studio 2019.

Conseil

Pour éviter de devoir taper le chemin complet de chaque instruction include dans le fichier source, ajoutez les dossiers requis dans Project>Propriétés>C/C++>Général>Répertoires Include supplémentaires.

Écrire des méthodes de test

Remarque

Cette section présente la syntaxe de Microsoft Unit Testing Framework pour C/C++. Pour plus d’informations, consultez référence API Microsoft.VisualStudio.TestTools.CppUnitTestFramework.

Pour la documentation de Google Test, consultez introduction à Google Test. Pour Boost.Test, consultez Boost Test Library: The Unit Test Framework.

Le fichier .cpp dans votre projet de test a une classe stub et une méthode définies pour vous. Ils montrent un exemple d’écriture de code de test. Les signatures utilisent les macros TEST_CLASS et TEST_METHOD, ce qui rend les méthodes détectables à partir de la fenêtre de l’Explorateur de tests.

Capture d’écran montre une classe stub et une méthode utilisant les macros TEST_CLASS et TEST_METHOD dans Visual Studio 2022.

Capture d’écran montre une classe stub et une méthode à l’aide des macros TEST_CLASS et TEST_METHOD dans Visual Studio 2019.

TEST_CLASS et TEST_METHOD font partie du Microsoft Native Test Framework. Explorateur de tests découvre les méthodes de test dans d’autres frameworks pris en charge de la même façon.

TEST_METHOD retourne void. Pour produire un résultat de test, utilisez les méthodes statiques de la classe Assert pour tester les résultats réels par rapport aux résultats attendus. Dans l’exemple suivant, supposons que MyClass a un constructeur qui accepte une std::string. Cet exemple montre comment tester que le constructeur initialise la classe comme prévu :

TEST_METHOD(TestClassInit)
{
    std::string name = "Bill";
    MyClass mc(name);
    Assert::AreEqual(name, mc.GetName());
}

Dans l’exemple précédent, le résultat de l’appel Assert::AreEqual détermine si le test réussit ou échoue. La classe Assert contient de nombreuses autres méthodes pour comparer les résultats attendus avec les résultats réels.

Vous pouvez ajouter des caractéristiques aux méthodes de test pour spécifier les propriétaires des tests, la priorité et d’autres informations. Vous pouvez ensuite utiliser ces valeurs pour trier et regrouper des tests dans Explorateur de tests. Pour plus d’informations, consultez Exécuter des tests unitaires avec l’Explorateur de tests.

Exécuter les tests

  1. Dans le menu Test, choisissez Explorateur de tests. L’illustration suivante montre un projet de test avant d’exécuter des tests.

    Capture d’écran montrant l’Explorateur de tests avant d’exécuter des tests dans Visual Studio 2022.

    Capture d’écran montrant l’Explorateur de tests avant d’exécuter des tests dans Visual Studio 2019.

    Remarque

    L’intégration de CTest à Explorateur de tests n’est pas encore disponible. Exécutez des tests CTest à partir du menu principal CMake.

  2. Si l’un de vos tests est manquant dans la fenêtre, générez le projet de test en cliquant avec le bouton droit sur son nœud dans l’Explorateur de solutions et en choisissant Générer ou Reconstruire.

  3. Dans l’Explorateur de tests, choisissez Exécuter tout ou sélectionnez les tests spécifiques à exécuter. Cliquez avec le bouton droit sur un test pour accéder à d’autres options, notamment son exécution en mode débogage avec des points d’arrêt activés. Une fois tous les tests exécutés, la fenêtre affiche les tests qui ont réussi et ceux qui ont échoué.

    Capture d’écran montrant l’Explorateur de tests une fois les tests exécutés dans Visual Studio 2022.

    Capture d’écran montrant l’Explorateur de tests une fois les tests exécutés dans Visual Studio 2019.

Pour les tests ayant échoué, le message affiche les détails qui aident à diagnostiquer la cause. Cliquez avec le bouton droit sur le test défaillant afin d'afficher un menu contextuel. Choisissez Déboguer pour parcourir la fonction où l’échec s’est produit.

Pour plus d’informations sur l’utilisation de l’Explorateur de tests, consultez Exécuter des tests unitaires avec l’Explorateur de tests.

Pour plus d’informations sur les tests unitaires, consultez principes de base des tests unitaires.

Utiliser CodeLens

Visual Studio 2017 et versions ultérieures (éditions Professionnel et Entreprise)

CodeLens vous permet de voir rapidement l’état d’un test unitaire sans quitter l’éditeur de code.

Initialisez CodeLens pour un projet de test unitaire C++ de l’une des manières suivantes :

  • Modifiez et générez votre projet de test ou votre solution.
  • Reconstruisez votre projet ou votre solution.
  • Exécutez des tests à partir de la fenêtre de l’Explorateur de tests.

Après avoir initialisé CodeLens, vous pouvez voir les icônes d’état de test au-dessus de chaque test unitaire.

Capture d’écran montrant les icônes CodeLens C++ dans Visual Studio 2022.

Capture d’écran montrant les icônes CodeLens C++ dans Visual Studio 2019.

Choisissez l’icône pour plus d’informations, ou pour exécuter ou déboguer le test unitaire :

Capture d’écran montrant l’icône CodeLens C++ une fois que vous l’avez sélectionnée pour plus d’informations dans Visual Studio 2022.

Capture d’écran montrant l’icône CodeLens C++ une fois que vous l’avez sélectionnée pour plus d’informations dans Visual Studio 2019.