Partager via


Applications C++ existantes de tests unitaires avec Test Explorer

Nous vous recommandons, avant de modifier une application existante, de vous vous assurez qu'elle a une bonne couverture des tests unitaires.Cela vous permet de savoir que vos modifications n'ont pas introduit de bogues.Si l'application n'a pas encore de tests unitaires, vous pouvez les ajouter à l'aide des techniques expliquées dans cette rubrique.Cette rubrique décrit comment ajouter des tests unitaires pour du code Visual C++ existant dans Microsoft Visual Studio 2012, débuter en décidant comment tester votre code, puis créer, écrire, et enfin, l'exécution des tests.

Décider comment tester votre code

Ouvrez le projet C++ existant, et examinez-le pour déterminer comment ajouter des tests unitaires.Vous pouvez utiliser des outils de modélisation, qui vous permettent d'afficher les dépendances dans le code, et vous aidez à comprendre comment les parties interagissent.Pour plus d’informations, consultez Visualisation et description du code.

Nous vous recommandons de séparer vos modifications dans les petites tâches.Avant chaque petite modification, les tests unitaires d'écriture des aspects du comportement reste les mêmes.Ces tests continuent de passer après avoir apporté la modification.Par exemple, si vous envisagez de modifier une fonction de tri pour qu'elle trie une liste de personnes par le nom au lieu de le prénom, vous pouvez écrire un test unitaire qui vérifie que tous les noms d'entrée apparaissent dans la sortie.Après avoir apporté la modification, vous pouvez ajouter de nouveaux tests unitaires pour le nouveau comportement.

S'il est pratique, plusieurs ou tous vos tests unitaires doivent utiliser uniquement les fonctions qui sont exportées.Mais si vous modifiez simplement une petite partie de l'application entière, vous pouvez utiliser les fonctions qui ne sont pas exportées.Par exemple, vous voulez que les tests qui appellent des fonctions internes, ou les tests qui définissent et obtiennent les valeurs des variables internes.

Il existe plusieurs façons de tester le code produit, selon qu'il expose les interfaces que vous souhaitez tester.Choisissez l'un des moyens suivants :

  • Les tests unitaires utilisent uniquement des fonctions exportées à partir du code sous test :
    Ajoutez un projet de test distinct.Dans le projet de test, ajoutez une référence au projet de sous test.
Passez à la procédure Pour créer un projet de test qui référence le projet de code.
  • Le code testé est généré en tant que fichier .exe :
    Ajoutez un projet de test séparéLiez-le au fichier objet de sortie.

    Allez à la procédure Pour créer un projet de test qui référence le code du fichier objet.

  • Les tests unitaires doivent utiliser des fonctions privées et des données, et le code testé peut être établi comme bibliothèque statique :
    Modifiez le projet de test afin qu'il soit compilé dans un fichier .lib.Ajoutez un projet de test distinct qui référence le projet de test.

    Cette approche présente l'avantage de permettre à vos tests d'utiliser des membres privés, mais ils conservent quand même les tests dans un projet séparé.Toutefois, elle peut ne pas convenir pour certaines applications où vous devez avoir une bibliothèque de liens dynamiques (.dll).

    Passez à la procédure Pour modifier le code testée par une bibliothèque statique.

  • Les tests unitaires doivent utiliser des fonctions privées et des données, et le code doit être généré en tant que bibliothèque de liens dynamiques (DLL) :
    Ajoutez les tests unitaires dans le même projet que le code du produit.

    Passez à la procédure Pour ajouter des tests unitaires dans le même projet.

Créer des tests

Pour modifier le code testée avec une bibliothèque statique

  • Si vos tests doivent utiliser des membres qui ne sont pas exportés par un projet à tester, et que le projet de test est généré en tant que bibliothèque dynamique, envisagez de la convertir en une bibliothèque statique.

    1. Dans l'Explorateur de solutions, sur le menu contextuel du projet testé, choisissez Properties.La fenêtre de propriétés du projet s'ouvre.

    2. Choisissez Propriétés de configuration, Général.

    3. Définissez Type de configuration à Bibliothèque statique (.lib).

Passez à la procédure Pour créer un projet de test pour des fonctions exportées.

La référence est exportée du projet de test

  • Si un projet de test exporte des fonctions que vous souhaitez tester, vous pouvez ajouter une référence au projet de code à partir du projet de test.

    1. Créer un projet de test C++

      • Dans le menu Fichier, choisissez Nouveau, Projet, Visual C++,Test, Projet de test unitaire C++.
    2. Dans l'explorateur de solutions, dans le menu contextuel du projet de test, choisissez Références.La fenêtre des propriétés du projet s'ouvre.

    3. Sélectionnez Propriétés communes, Framework et références, puis choisissez le bouton Ajouter une nouvelle référence .

    4. Sélectionnez Projets, puis le projet à tester.

      Cliquez sur le bouton Ajouter.

    5. Dans les propriétés du projet de test, ajoutez l'emplacement du projet de test aux répertoires inclus.

      Choisissez Propriétés de configuration, Répertoires VC++, Répertoires inclus.

      Choisissez Modifier, puis ajoutez le répertoire d'en-tête du projet de test.

Accédez à Écrire des tests unitaires.

Pour lier des tests à l'objet ou des fichiers bibliothèques

  • Si le code testé n'exporte pas les fonctions que vous souhaitez tester, vous pouvez ajouter la sortie .obj ou le fichier .lib aux dépendances du projet de test.

    1. Créez un proje de test C++.

      • Dans le menu Fichier, choisissez Nouveau, Projet, Visual C++,Test, Projet de test unitaire C++.
    2. Dans l'explorateur de solution, das le menu contextuel du projet de test, choisissez Propriétés.La fenêtre des propriétés du projet s'ouvre.

    3. Choisissez Propriétés de configuration, Editeur de liens, Entrée, Dépendances supplémentaires.

      Choisissez Modifier, puis ajoutez les noms des fichiers .obj ou .lib .N'utilisez pas les chemins d'accès complet.

    4. Choisissez Propriétés de configuration, Editeur de liens, Général, Répertoires de bibliothèque supplémentaires.

      Choisissez Modifier, puis ajoutez le chemin d'accès du dossier des fichiers .obj ou .lib .Le chemin d'accès est généralement dans le dossier build du projet de test.

    5. Choisissez Propriétés de configuration, VC++ Directories, Répertoire inclus.

      Choisissez Editer, puis ajouter le répertoire d'en-tête du projet testé.

Allez à Ecrire des tests unitaires.

Pour ajouter des tests unitaires dans le même projet

  1. Modifiez les propriétés du projet du code du produit pour inclure les en-têtes et les fichiers bibliothèques qui sont requis pour le test unitaire.

    1. Dans l'explorateur de solutions, dans le menu contextuel du projet de test, choisissez Propriétés.La fenêtre des propriétés du projet s'ouvre.

    2. Choisissez Propriétés de configuration, Répertoires VC++.

    3. Modifiez les dossiers d'inclusion et de bibliothèque :

      Répertoires Include

      $(VCInstallDir)UnitTest\include;$(IncludePath)

      Répertoires de bibliothèque

      $(VCInstallDir)UnitTest\lib;$(LibraryPath)

  2. Ajouter un fichier de test unitaire C++ :

    • Dans l'explorateur de solutions, dans le menu contextuel du projet, choisissez Ajouter, Nouvel élément, puis choisissez Test unitaire C++.

Allez à Ecrire des tests unitaires.

Écrire des tests unitaires

  1. Dans chaque fichier de code de test unitaire, ajoutez une instruction d' #include pour les en-têtes du projet de test.

  2. Ajoutez les classes et les méthodes de test aux fichiers de code de test unitaire.Par exemple :

    #include "stdafx.h"
    #include "CppUnitTest.h"
    #include "MyProjectUnderTest.h"
    using namespace Microsoft::VisualStudio::CppUnitTestFramework;
    namespace MyTest
    {
      TEST_CLASS(MyTests)
      {
      public:
          TEST_METHOD(MyTestMethod)
          {
              Assert::AreEqual(MyProject::Multiply(2,3), 6);
          }
      };
    }
    

Pour plus d’informations, consultez Tests unitaires du code natif avec Test Explorer.

Exécutez les tests

  1. Dans le menu Affichage, choisissez Autres fenêtres, explorateur de tests.

  2. Dans l'explorateur de test, choisissez Tout exécuter.

Pour plus d’informations, consultez Démarrage rapide : développement piloté avec Test Explorer.