Écrire des tests unitaires pour des DLL C++ dans Visual StudioWrite Unit tests for C++ DLLs in Visual Studio

Il existe plusieurs façons de tester du code de DLL, selon qu’elle exporte ou non les fonctions que vous voulez tester.There are several ways to test DLL code, depending on whether it exports the functions that you want to test. Choisissez l'un des moyens suivants :Choose one of the following ways:

Les tests unitaires appellent seulement des fonctions exportées depuis la DLL : ajoutez un projet de test distinct comme décrit dans Écriture de tests unitaires pour C/C++.The unit tests call only functions that are exported from the DLL: Add a separate test project as described in Writing Unit Tests for C/C++. Dans le projet de test, ajoutez une référence au projet DLL.In the test project, add a reference to the DLL project.

Passez à la procédure Pour référencer des fonctions exportées depuis le projet DLL.Go to the procedure To reference exported functions from the DLL project.

La DLL est générée sous la forme d’un fichier .exe : ajoutez un projet de test distinct.The DLL is built as an .exe file: Add a separate test project. Liez-le au fichier objet de sortie.Link it to the output object file.

Passez à la procédure Pour lier les tests aux fichiers objets ou bibliothèques.Go to the procedure To link the tests to the object or library files.

Les tests unitaires appellent des fonctions non-membres qui ne sont pas exportées depuis la DLL, et la DLL peut être générée sous forme de bibliothèque statique : modifiez le projet de DLL pour qu’il soit compilé en un fichier .lib.The unit tests call non-member functions which are not exported from the DLL, and the DLL can be built as a static library: Change the DLL project so that it is compiled to a .lib file. Ajoutez un projet de test distinct qui référence le projet testé.Add a separate test project that references the project under test.

Cette approche présente l’avantage de permettre à vos tests d’utiliser des membres non exportés, mais de conserver les tests dans un projet distinct.This approach has the benefit of allowing your tests to use non-exported members, but still keep the tests in a separate project.

Passez à la procédure Pour changer la DLL en une bibliothèque statique.Go to the procedure To change the DLL to a static library.

Les tests unitaires doivent appeler des fonctions non-membres qui ne sont pas exportées, et le code doit être généré sous la forme d’une bibliothèque de liens dynamiques (DLL) : ajoutez des tests unitaires dans le même projet que le code du produit.The unit tests must call non-member functions that are not exported, and the code must be built as a dynamic link library (DLL): Add unit tests in the same project as the product code.

Passez à la procédure Pour ajouter des tests unitaires dans le même projet.Go to the procedure To add unit tests in the same project.

Créer les testsCreating the tests

  • Si vos tests doivent utiliser des membres qui ne sont pas exportés par le projet DLL et que le projet de test est généré sous forme d’une bibliothèque dynamique, envisagez de le convertir en bibliothèque statique.If your tests must use members that are not exported by the DLL project, and the project under test is built as a dynamic library, consider converting it to a static library.

    1. Dans l’Explorateur de solutions, dans le menu contextuel du projet testé, choisissez Propriétés.In Solution Explorer, on the shortcut menu of the project under test, choose Properties. La fenêtre des propriétés du projet s'ouvre.The project properties window opens.

    2. Choisissez Propriétés de configuration | Général.Choose Configuration Properties | General.

    3. Définissez Type de configuration sur Bibliothèque statique (.lib).Set Configuration Type to Static Library (.lib).

    Poursuivez avec la procédure Pour lier les tests aux fichiers objets ou bibliothèques.Continue with the procedure To link the tests to the object or library files.

Pour référencer des fonctions de DLL exportées depuis le projet de testTo reference exported DLL functions from the test project

  • Si un projet DLL exporte les fonctions que vous voulez tester, vous pouvez ajouter une référence au projet de code depuis le projet de test.If the DLL project exports the functions that you want to test, then you can add a reference to the code project from the test project.

    1. Créez un projet de test unitaire natif.Create a Native Unit Test Project.

      1. Dans le menu Fichier, choisissez Nouveau | Projet | Visual C++ | Test | Projet de test unitaire C++.On the File menu, choose New | Project | Visual C++,Test | C++ Unit Test Project.
    2. Dans l’Explorateur de solutions, dans le menu contextuel du projet de test, choisissez Références.In Solution Explorer, on the shortcut menu of the test project, choose References. La fenêtre des propriétés du projet s'ouvre.The project properties window opens.

    3. Sélectionnez Propriétés communes | Structure et références, puis cliquez sur le bouton Ajouter une nouvelle référence.Select Common Properties | Framework and References, and then choose the Add New Reference button.

    4. Sélectionnez Projets, puis le projet à tester.Select Projects, and then the project to be tested.

      Choisissez le bouton Ajouter .Choose the Add button.

    5. Dans les propriétés du projet de test, ajoutez l'emplacement du projet testé aux répertoires Include.In the properties for the test project, add the location of the project under test to the Include Directories.

      Choisissez Propriétés de configuration | Répertoires VC++ | Répertoires Include.Choose Configuration Properties | VC++ Directories | Include Directories.

      Choisissez Modifier, puis ajoutez le répertoire d’en-tête du projet testé.Choose Edit, and then add the header directory of the project under test.

    Passez à Écrire les tests unitaires.Go to Writing the unit tests.

Pour lier les tests aux fichiers objets ou bibliothèquesTo link the tests to the object or library files

  • Si la DLL n’exporte pas les fonctions que vous voulez tester, vous pouvez ajouter le fichier de sortie .obj ou .lib aux dépendances du projet de test.If the DLL does not export the functions that you want to test, you can add the output .obj or .lib file to the dependencies of the test project.

    1. Créez un projet de test unitaire natif.Create a Native Unit Test Project.

      1. Dans le menu Fichier, choisissez Nouveau | Projet | Visual C++ | Test | Projet de test unitaire natif.On the File menu, choose New | Project | Visual C++ | Test | Native Unit Test Project.
    2. Dans l’Explorateur de solutions, dans le menu contextuel du projet de test, choisissez Propriétés.In Solution Explorer, on the shortcut menu of the test project, choose Properties.

    3. Choisissez Propriétés de configuration | Éditeur de liens | Entrée | Dépendances supplémentaires.Choose Configuration Properties | Linker | Input | Additional Dependencies.

      Choisissez Modifier, puis ajoutez les noms des fichiers .obj ou .lib.Choose Edit, and add the names of the .obj or .lib files. N’utilisez pas les chemins d’accès complets.Do not use the full path names.

    4. Choisissez Propriétés de configuration | Éditeur de liens | Général | Répertoires de bibliothèques supplémentaires.Choose Configuration Properties | Linker | General | Additional Library Directories.

      Choisissez Modifier, puis ajoutez le chemin d’accès au répertoire des fichiers .obj ou .lib.Choose Edit, and add the directory path of the .obj or .lib files. Le chemin d’accès se trouve généralement dans le dossier de build du projet testé.The path is typically within the build folder of the project under test.

    5. Choisissez Propriétés de configuration | Répertoires VC++ | Répertoires Include.Choose Configuration Properties | VC++ Directories | Include Directories.

      Choisissez Modifier, puis ajoutez le répertoire d’en-tête du projet testé.Choose Edit, and then add the header directory of the project under test.

    Passez à Écrire les tests unitaires.Go to Writing the unit tests.

Pour ajouter des tests unitaires dans le même projetTo add unit tests in the same project

  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.Modify the product code project properties to include the headers and library files that are required for unit testing.

    1. Dans l’Explorateur de solutions, dans le menu contextuel du projet testé, choisissez Propriétés.In Solution Explorer, in the shortcut menu of the project under test, choose Properties. La fenêtre des propriétés du projet s'ouvre.The project properties window opens.

    2. Choisissez Propriétés de configuration | Répertoires VC++.Choose Configuration Properties | VC++ Directories.

    3. Modifiez les répertoires Include et de bibliothèques :Edit the Include and Library directories:

      Répertoires IncludeInclude Directories $(VCInstallDir)UnitTest\include;$(IncludePath)$(VCInstallDir)UnitTest\include;$(IncludePath)
      Répertoires de bibliothèquesLibrary Directories $(VCInstallDir)UnitTest\lib;$(LibraryPath)$(VCInstallDir)UnitTest\lib;$(LibraryPath)
  2. Ajoutez un fichier de test unitaire C++ :Add a C++ Unit Test file:

    • Dans l’Explorateur de solutions, dans le menu contextuel du projet, choisissez Ajouter | Nouvel élément | Test unitaire C++.In Solution Explorer, in the shortcut menu of the project, choose Add | New Item | C++ Unit Test.

    Passez à Écrire les tests unitaires.Go to Writing the unit tests.

Écrire les tests unitairesWriting the unit tests

  1. Dans chaque fichier de code de test unitaire, ajoutez une instruction #include pour les en-têtes du projet testé.In each unit test code file, add an #include statement for the headers of the project under test.

  2. Ajoutez les classes et les méthodes de test aux fichiers de code de test unitaire.Add test classes and methods to the unit test code files. Exemple :For example:

    #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);
          }
      };
    }
    

Exécuter les testsRun the tests

  1. Dans le menu Test, choisissez Fenêtres | Explorateur de tests.On the Test menu, choose Windows | Test Explorer.

  2. Si tous vos tests ne sont pas visibles 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 Régénérer.If all your tests are not visible in the window, build the test project by right-clicking its node in Solution Explorer and choosing Build or Rebuild.

  3. Dans l’Explorateur de tests, choisissez Exécuter tout ou sélectionnez les tests spécifiques à exécuter.In Test Explorer, choose Run All, or select the specific tests you want to run. 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.Right-click on a test for other options, including running it in debug mode with breakpoints enabled.

Voir aussiSee also