Comment mettre en place de tests unitaires pour Visual Studio C++
Je vais avoir de la difficulté à trouver comment obtenir le cadre de tests de configurer et utilisable dans Visual Studio 2008 pour C++
sans doute grâce à la suite de tests unitaires.
Des liens ou des tutoriels serait appréciée.
- Google publie C++ Framework de Test qui est très similaire avec les frameworks xUnit. http://code.google.com/p/googletest/
- Quel cadre avez-vous consommer?
- en fait, je n'ai pas encore utilisé l'un d'eux. J'ai décidé pour ce que j'ai à travailler sur les tests unitaires n'est pas l'utilisation la plus efficace du temps.
Vous devez vous connecter pour publier un commentaire.
Cette page peut aider, il passe en revue tout à fait un peu de C++ unité de frameworks de test:
Découvrez CPPUnitLite ou CPPUnitLite2.
CPPUnitLite a été créé par Michael Plumes, qui avait d'abord porté de Java JUnit pour le C++ CPPUnit (CPPUnit essaie d'imiter le modèle de développement de JUnit - mais le C++ manque de Java fonctionnalités [p. ex. réflexion] pour le rendre facile à utiliser).
CPPUnitLite tente de faire un vrai C++-style framework de test, pas un Java un porté à C++. (Je paraphrase de la Plume de Travailler Efficacement avec le Code existant livre). CPPUnitLite2 semble être un autre réécrire, avec plus de fonctionnalités et corrections de bugs.
J'ai aussi juste trébuché à travers UnitTest++ qui comprend des trucs de CPPUnitLite2 et un autre cadre.
Microsoft a publié WinUnit.
Aussi checkout Catch ou Doctest
Il y a un moyen de tester le C++ à l'aide de la construction dans le cadre d'essais au sein de Visual Studio 2008. Si vous créez un C++ Projet de Test, à l'aide de C++/CLI, vous pouvez faire des appels à une DLL non managée. Vous devrez donc passer le Common Language Runtime support /clr de /clr:sûr, si vous voulez tester du code qui a été écrit en C++.
J'ai le détail étape par étape sur mon blog ici: http://msujaws.wordpress.com/2009/05/06/unit-testing-mfc-with-mstest/
Ici est l'approche que j'ai utiliser pour tester le module de Réécriture d'URL IIS de Microsoft (il est en ligne de commande, mais ils doivent travailler pour VS aussi):
Voici un exemple:
Avec cette approche, les gens n'ont pas à en savoir trop de C++/CLI tout ça, tout le vrai test sera fait en C++ natif et le TestShim classe sera utilisée pour "publier" le test de MSTest.exe (ou de le rendre visible).
Pour l'ajout de nouveaux tests que vous venez de déclarer une nouvelle [TestMethod] void NewTest(){::NewTest();} la méthode et un nouveau vide NewTest() fonction native. Pas de macros, pas de trucs, compliquée.
Maintenant, le heade fichier est facultatif, mais il peut être utilisé pour exposer la classe Assert " méthodes en C++ natif de signatures (par exemple, wchar_t* au lieu de Stirng^), de sorte qu'il peut vous pouvez le garder près de C++ et loin de C++/CLI:
Voici un exemple:
HTH
Personnellement, je préfère WinUnit puisqu'il n'a pas besoin de moi pour écrire quoi que ce soit, sauf pour mes tests (j'en construire un .dll comme le test, pas un exe). Je viens de construire un projet, et le point WinUnit.exe pour mon test répertoire de sortie et il s'exécute tout ce qu'il trouve. Vous pouvez télécharger le WinUnit projet ici. (MSDN vous demande désormais de télécharger la totalité de l'émission, pas l'article. WinUnit est inclus à l'intérieur.)
Le cadre fourni avec VS9 est .NET, mais vous pouvez écrire des tests en C++/CLI, donc tant que vous êtes à l'aise dans l'apprentissage de quelques .NET ismes, vous devriez être en mesure de tester la plupart de tout code C++.
coup de pouce.test
et googletest
look assez similaire, mais adapté à légèrement différentes utilisations. Ces deux ont un composant binaire, de sorte que vous aurez besoin d'un projet extra dans votre solution pour compiler et exécuter les tests.
Le cadre que nous utilisons est CxxTest, qui est beaucoup plus léger; c'est uniquement les en-têtes, et utilise un langage Perl (!) script pour gratter la suite de tests d'informations à partir de votre en-tête (suites hériter de CxxTest::Base, tous vos méthodes de test les noms commencent par "test"). Évidemment, cela nécessite que vous obtenez Perl à partir de une source ou un autre, ce qui ajoute de la surcharge à votre environnement de construction de l'installation.
- Je utiliser UnitTest++.
Dans les années depuis que j'ai fait ce post, la source s'est déplacé à partir de SourceForge pour github. Aussi la exemple tutoriel est maintenant plus agnostique - ne pas aller dans n'importe quelle configuration ou d'un projet mis en place à tous.
Je doute qu'il reste du travail pour Visual Studio 6 que les fichiers de projet sont maintenant créés via CMake. Si vous avez encore besoin de la version la plus ancienne de soutien que vous pouvez obtenir la dernière version disponible sous la SourceForge branche.
Les outils qui ont été mentionnés ici sont tous les outils de ligne de commande. Si vous recherchez une plus grande intégration de la solution, avoir un regard sur cfix studio, qui est un Visual Studio add-in pour le C/C++ de tests unitaires. Il est tout à fait similaire à TestDriven.Net mais pour (non géré) C/C++ plutôt que .NET.
J'ai utilisé CppUnit avec VS2005 et Eclipse. Le wiki est très complet (surtout si vous êtes familier avec JUnit).
Je ne suis pas sûr à 100% sur VS2008, mais je sais que le framework de Test Unitaire que microsoft livré dans VS2005 comme faisant partie de leur Équipe à la Suite n'était que pour .NET, pas du C++
J'ai utilisé CppUnit aussi et c'était bien. La même que NUnit/JUnit/ainsi de suite.
Si vous avez utilisé boost, ils ont aussi une bibliothèque de tests unitaires
Le gars derrière boost ont certains grave codage des côtelettes, donc je dirais que leur cadre devrait être assez bonne, mais il pourrait ne pas être le plus convivial 🙂
J'aime la CxxTest ainsi pour les mêmes raisons. C'est un fichier d'en-tête uniquement, donc pas de lien nécessaire. Vous n'êtes pas coincé avec Perl comme il y a un Python runner. Je vais revoir la bibliothèque de google bientôt. Le coup de pouce des trucs tire trop de bagages.
L'unité de testeur pour Visual Studio; 2008 est seulement pour .NET code pour autant que je sais.
J'ai utilisé CppUnit sur Visual Studio; 2005 et l'a trouvé pour être très bon.
Aussi loin que je me souvienne, la configuration est relativement indolore. Assurez-vous juste que dans vos projets d'essais à l'éditeur de liens (Linker → Entrée → Dépendances Supplémentaires) comprend cppunitd.lib.
Puis,
#include <cppunit/extensions/HelperMacros.h>
dans votre en-tête.Vous pouvez alors suivre les étapes de http://cppunit.sourceforge.net/doc/1.11.6/cppunit_cookbook.html pour obtenir votre classe de test de travail.
Je souffrais de mettre en œuvre de tests unitaires pour le C++ de l'application dans un environnement Windows avec Visual Studio. Donc j'ai réussi à surmonter et écrit un post comme une étape-par-étape d'orientation pour le C++ de l'application de tests unitaires. J'espère que ça peut vous aider.
Test unitaire pour le C++ dans Visual Studio