Utiliser le framework de tests unitaires Microsoft pour C++ dans Visual StudioUse the Microsoft Unit Testing Framework for C++ in Visual Studio

Le framework de tests unitaires Microsoft pour C++ est par défaut dans la charge de travail Développement Desktop en C++.The Microsoft Unit Testing Framework for C++ is included by default in the Desktop Development with C++ workload.

Pour écrire des tests unitaires dans un projet distinctTo write unit tests in a separate project

En règle générale, vous exécutez votre code de test dans son propre projet, dans la même solution que le code que vous voulez tester.Typically, you run your test code in its own project in the same solution as the code you want to test. Pour installer et configurer un nouveau projet de test, consultez Écriture de tests unitaires pour C/C++.To set up and configure a new test project, see Writing unit tests for C/C++.

Pour écrire des tests unitaires dans le même projetTo write unit tests in the same project

Dans certains cas, par exemple lors du test de fonctions non exportées dans une DLL, il peut être nécessaire de créer les tests dans le même projet que le programme que vous testez.In some cases, for example when testing non-exported functions in a DLL, you might need to create the tests in the same project as the program you are testing. Pour écrire des tests unitaires dans le même projet :To write unit tests in the same project:

  1. Modifiez les propriétés du projet de façon à inclure les fichiers d’en-tête et les fichiers bibliothèques nécessaires aux tests unitaires.Modify the project properties to include the headers and library files that are required for unit testing.

    1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet du programme que vous testez, puis choisissez Propriétés | Propriétés de configuration | Répertoires VC ++.In Solution Explorer, right-click on project node for the program you are testing, then choose Properties | Configuration Properties | VC++ Directories.

    2. Cliquez sur la flèche vers le bas dans les lignes suivantes et choisissez :Click on the down arrow in the following rows and choose :

      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:

    • Cliquez avec le bouton droit sur le nœud du projet dans l’Explorateur de solutions, puis choisissez Ajouter | Nouvel élément | Test unitaire C++.Right-click on the project node in Solution Explorer and choose Add | New Item | C++ Unit Test.

Écrire les testsWrite the tests

Tout fichier .cpp avec des classes de test doit inclure « CppUnitTest.h » et avoir une instruction using pour using namespace Microsoft::VisualStudio::CppUnitTestFramework.Any .cpp file with test classes must include "CppUnitTest.h" and have a using statement for using namespace Microsoft::VisualStudio::CppUnitTestFramework. Le projet de test est déjà configuré pour vous.The test project is already configured for you. Il contient également une définition d’espace de noms et une TEST_CLASS avec une TEST_METHOD pour vous aider à démarrer.It also includes a namespace definition, and a TEST_CLASS with a TEST_METHOD to get you started. Vous pouvez modifier le nom de l’espace de noms, ainsi que les noms entre parenthèses dans les macros de la classe et de la méthode.You can modify the namespace name as well as the names in parentheses in the class and method macros.

Des macros spéciales sont définies pour l’initialisation des modules, des classes et des méthodes de test, et pour le nettoyage des ressources une fois les tests terminés.Special macros are defined for initializing test modules, classes and methods, and for cleanup of resoures when tests are completed. Ces macros génèrent du code qui est exécuté avant le premier accès à une classe ou à une méthode, et une fois que le dernier test a été exécuté.These macros generate code that is executed before a class or method is first accessed, and after the last test has run. Pour plus d’informations, consultez Initialiser et nettoyer.For more information, see Initialize and cleanup.

Utilisez les méthodes statiques de la classe Assert pour définir des conditions de test.Use the static methods in the Assert class to define test conditions. Utilisez la classe Logger pour écrire des messages dans la fenêtre Sortie.Use the Logger class to write messages to the Output Window. Ajouter des attributs aux méthodes de testAdd attributes to test methods

Exécuter les testsRun the tests

  1. Dans le menu Test, choisissez Fenêtres, puis Explorateur de tests.On the Test menu, choose Windows, Test Explorer.
  2. Si vos tests n’apparaissent pas tous 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.

  4. Dans la fenêtre Sortie, choisissez Tests dans la liste déroulante pour afficher les messages écrits par la classe Logger :In the Output Window choose Tests in the drop down to view messages written out by the Logger class:

    Fenêtre Sortie C++ affichant des messages de test

Définir des caractéristiques pour permettre le regroupementDefine traits to enable grouping

Vous pouvez définir des caractéristiques sur des méthodes de test, qui vous permettent de catégoriser et de regrouper les tests dans l’Explorateur de tests.You can define traits on test methods which enable you to categorize and group tests in Test Explorer. Pour définir une caractéristique, utilisez la macro TEST_METHOD_ATTRIBUTE .To define a trait, use the TEST_METHOD_ATTRIBUTE macro. Par exemple, pour définir une caractéristique nommée TEST_MY_TRAIT:For example, to define a trait named TEST_MY_TRAIT:

#define TEST_MY_TRAIT(traitValue) TEST_METHOD_ATTRIBUTE(L"MyTrait", traitValue)

Pour utiliser la caractéristique définie dans vos tests unitaires :To use the defined trait in your unit tests:

BEGIN_TEST_METHOD_ATTRIBUTE(Method1)
    TEST_OWNER(L"OwnerName")
    TEST_PRIORITY(1)
    TEST_MY_TRAIT(L"thisTraitValue")
END_TEST_METHOD_ATTRIBUTE()

TEST_METHOD(Method1)
{
    Logger::WriteMessage("In Method1");
    Assert::AreEqual(0, 0);
}

Macros d'attribut de fonctionnalités C++C++ trait attribute macros

Les caractéristiques prédéfinies suivantes se trouvent dans CppUnitTest.h.The following pre-defined traits are found in CppUnitTest.h. Pour plus d’informations, consultez Informations de référence sur l’API du framework de tests unitaires Microsoft pour C++.For more information, see The Microsoft Unit Testing Framework for C++ API Reference.

MacroMacro DescriptionDescription
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue) Utilisez la macro TEST_METHOD_ATTRIBUTE pour définir une caractéristique.Use the TEST_METHOD_ATTRIBUTE macro to define a trait.
TEST_OWNER(ownerAlias) Utilisez la caractéristique Owner prédéfinie pour spécifier un propriétaire de la méthode de test.Use the predefined Owner trait to specify an owner of the test method.
TEST_PRIORITY(priority) Utilisez la caractéristique Priority prédéfinie pour assigner des priorités relatives à vos méthodes de test.Use the predefined Priority trait to assign relative priorities to your test methods.

Voir aussiSee also

Démarrage rapide : développement piloté par les tests avec l’Explorateur de testsQuick Start: Test Driven Development with Test Explorer