Prise en main avec CppUTest
·
14 mai 2017

Points Clés
CppUTest est un framework de test de style xUnit léger et activement maintenu pour C/C++, avec une couche d'intégration C qui fonctionne parfaitement même dans les bases de code lourdes en C.
Vous pouvez l'installer via les gestionnaires de paquets (distributions Linux, Homebrew) ou cloner le dépôt GitHub.
Une configuration minimale se compose de :
un répertoire de production
src/,un répertoire de tests
t/,un exécuteur de tests (
CommandLineTestRunner), etdes modules de test utilisant les blocs
TEST_GROUPetTEST().
CppUTest fournit un assistant MakefileWorker.mk qui simplifie la compilation des tests, l'édition de liens avec les bibliothèques, et la gestion des indicateurs.
La détection des fuites de mémoire est activée par défaut grâce aux remplacements de malloc/free, capturant les fuites au sein du code source testé.
La couverture de code via gcov s'intègre facilement en activant
CPPUTEST_USE_GCOV=Y, en produisant des rapports de couverture complets et des résumés HTML.Le framework inclut des fonctionnalités avancées : moquerie, plugins, scripts d'aide, et interopérabilité directe avec C — utile pour les bases de code d'entreprise complexes.
Points forts des Q&A
Qu'est-ce que CppUTest et pourquoi l'utiliser ?
C'est un cadre de test robuste de style xUnit pour C/C++ avec une API propre, des macros d'assertion intégrées, une détection des fuites et un développement actif — idéal pour les systèmes hérités ou modernes.
Comment structurer un projet de base en utilisant CppUTest?
Comment exécutez-vous tous les tests ?
Le test runner utilise :
Comment construire des tests sans configurer manuellement les options du compilateur ?
Utilisez
MakefileWorker.mkde CppUTest, qui gère automatiquement les indicateurs, le lien et l'exécution des tests.CppUTest peut-il détecter les fuites de mémoire automatiquement ?
Oui. Cela remplace malloc/free lors des constructions de test, rapportant :
quel test a fui,
où cela s'est produit,
la taille de la fuite et le contenu de la mémoire.
Exemple de sortie d'échec :
Comment générer un code coverage ?
Activer :
CPPUTEST_USE_GCOV=YAssurez-vous que
filterGcov.shest disponible à$(CPPUTEST_HOME)/scripts/.Exécuter : make
gcovCela produit des rapports de couverture
.gcov, un résumé en texte, et des rapports de couverture HTML.
Que peut faire CppUTest d'autre au-delà des tests de base ?
système de simulation
système de plugins
scripts d'automatisation d'assistance
intégration native C
macros d'assertion étendues
Who is CppUTest best suited for?
Équipes travaillant avec des systèmes embarqués, des plateformes C, des services C++, ou tout environnement où la fiabilité et la sécurité mémoire doivent être continuellement validées.
Chez SparkPost, nous consacrons beaucoup de temps et d'efforts à tester notre code. Notre plateforme est écrite en C, et récemment, j'ai recherché l'intégration avec un framework de test unitaire appelé "CppUTest", qui fournit des tests de style xUnit pour C/C++. Ce framework est robuste, riche en fonctionnalités et en développement actif, ce qui en fait un excellent choix. Il offre également une couche d'intégration C qui rend son utilisation facile avec notre code C de plateforme même si la plupart du framework est en C++. Ce tutoriel couvre comment commencer avec CppUTest sur vos propres projets.
Intéressé par More ?
Ceci n'est que la partie émergée de l'iceberg en ce qui concerne toutes les fonctionnalités contenues dans cet outil. Outre les bases discutées ici, il comprend également un cadre de simulation, une couche d'intégration C directe et un cadre de plugin, pour n'en nommer que quelques-uns parmi les plus importants. Le repo contient également un répertoire complet de scripts d'assistance qui peuvent aider à automatiser certaines des parties routinières du travail avec le framework.
J'espère que les informations ici vous aideront à améliorer la qualité de votre code C/C++ avec cet excellent outil !
Téléchargement de CppUTest
La page du projet CppUTest est disponible sur le site officiel, et le dépôt est sur github. Il est également inclus dans les référentiels de gestion des paquets pour de nombreuses distributions Linux, ainsi que homebrew sur Mac OS. Les exemples qui suivent ont été exécutés sur Mac OS X, mais ils sont dérivés du code écrit pour Red Hat, le système d'exploitation sur lequel notre plateforme fonctionne.
Les bases sont bien documentées sur la page d'accueil de CppUTest. Nous allons survoler cela et passer à certaines des fonctionnalités les plus intéressantes.



