Test Unitaire C++ dans Visual Studio 11

Les tests unitaire sont disponibles dans la version Preview de Visual Studio 11.

Une fois que votre projet est crée, il est possible de rajouter un nouvel élément  de type C++ Unit Test (cpp) comme illustré sur la figure suivante.

image

Ou de rajouter un nouveau projet de type Native Unit Test Project

image

Un squelette minimum est crée pour que vous puissiez commencer à écrire vos tests Unitaire.

Code Snippet

  1. #include "stdafx.h"
  2. #include "CppUnitTest.h"
  3.  
  4. using namespace Microsoft::VisualStudio::CppUnitTestFramework;
  5.  
  6. namespace UnitTest1
  7. {       
  8.     TEST_CLASS(UnitTest1)
  9.     {
  10.     public:
  11.        
  12.         TEST_METHOD(TestMethod1)
  13.         {
  14.             Assert::AreEqual(42,42);
  15.         }
  16.  
  17.     };
  18. }

Pour que le test  soit actif, il faut compiler le projet.

Remarque : Si vous obtenez le message “fatal error C1083: Cannot open include file: 'CppUnitTest.h': No such file or directory”, il faut rajouter les chemins d’accès suivants, pour les includes et les librairies, C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\UnitTest\include, "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\UnitTest\lib"

Pour exécuter le ou les tests, activez la fenêtre : View | Other Windows | Unit Test Explorer

image

 

Si le test réussi vous obtenez au jour d’aujourd’hui la fenêtre suivante :

image

Je reviendrai dans un prochain billet plus en détail sur les éléments du Framework de tests de Visual C++, mais sachez qu’il est basé sur la librairie Microsoft.VisualStudio.TestTools.CppUnitTestFramework.lib et sur un ensemble de macro contenues dans les fichiers d’entête CppUnitTest.h, CppUnitTestCommon.h, CppUnitTestAssert.h, CppUnitTestLogger.h

Pour ceux qui auraient l’habitude de manipuler les tests unitaire avec le Framework .NET, on y retrouvera des méthodes telles que Assert::AreEqual, NotEqual, IsNotNull, etc…, ainsi que des méthodes pour loguer des messages telle Logger::WriteMessage

 

Eric Vernié