GoogleTest vs CppUnit: les faits

Lors de la mise en place de notre framework de tests unitaires C ++ pour les années à venir, nous avons sélectionné GoogleTest et CppUnit . J’ai de l’expérience avec les deux et ma préférence va à GoogleTest. Quoi qu’il en soit, pour convaincre mon patron, j’ai besoin de quelques faits, donc j’ai lu sur Internet, y compris les manuels, les pages wiki et certaines sources. J’ai trouvé une liste des avantages de GoogleTest et un seul avantage CppUnit (les testeurs graphiques). Ici, ils sont classés par utilité perçue :

  • INSTANTIATE_TEST_CASE_P pour instancier un scénario de test avec n’importe quel jeu de parameters, y compris les produits cartésiens
  • FRIEND_TEST pour tester les membres de la classe privée (pour tous les anciens codes)
  • transformer les assertions en points d’arrêt
  • affirmations non fatales
  • Intégration googlemock “out of the box”
  • détection automatique des tests, pas besoin de les énumérer
  • Les tests peuvent être désactivés et activés
  • les tests à exécuter peuvent être sélectionnés en utilisant des modèles de nom
  • tests de valeur / paramétrés par type
  • assertions de prédicats définies par l’utilisateur
  • tests de décès
  • ensemble plus riche d’assertions
  • type assert
  • affirmer sur des sous-routines
  • des informations de débogage supplémentaires peuvent être ajoutées aux assertions à l’aide de <<
  • RecordProperty émet la dernière valeur de la propriété vers la sortie XML
  • SCOPED_TRACE aide à comprendre le contexte d’un échec d’assertion provenant d’une sous-routine ou d’une boucle.
  • sortie xUnit XML, peut être affichée immédiatement par Jenkins sans transformation XSLT entre
  • prend en charge les imprimantes de types personnalisés
  • temps consommé par l’indication du test (je pense que cela est également possible avec CppUnit mais je ne l’ai pas encore compris)
  • API d’écoute d’événement de test (plug-ins définis par l’utilisateur)
  • test de mélange
  • aucune exception et RTTI

Ai-je raison de supposer que tout ce qui précède n’est pas pris en charge par CppUnit? Existe-t-il une fonctionnalité GoogleTest utile non disponible dans CppUnit?

Et last but not least: Y at-il de belles fonctionnalités CppUnit qui manquent à GoogleTest?

Merci!

Si vous utilisez une version plus ancienne du compilateur gcc ou si votre code sous les tests s’exécute sur vxWorks (ou VxSim), vous aurez peut-être plus de chance avec cppUnit qu’avec le framework Googletest.

D’autre part, une autre caractéristique du framework googletest est la disponibilité de 3 niveaux différents de configuration / déassembly:

  • par programme
  • par cas de test (ou groupe de tests)
  • par instance de test individuelle

Vous ne savez pas si cela est pris en charge dans cppUnit, mais cela pourrait être très pratique, en particulier avec les systèmes hérités.

En outre, il existe un plugin googletest pour Eclipse CDT.

Si vous n’avez pas regardé xUnit ++ , je l’ai fait spécifiquement parce que je n’étais pas satisfait de ce qui était disponible (y compris gtest). La majeure partie de votre liste est prise en charge et, si ce n’est pas le cas, si c’est une fonctionnalité indispensable, je serais probablement prêt à l’append.

Ce sont les avantages que je vois. Il y a un couple de testeurs de GUI:

  1. https://github.com/ospector/gtest-gbar
  2. https://github.com/SandyChapman/gtest-runner-qt

J’ai utilisé le premier et cela fonctionne plutôt bien, même s’il est en cours de développement. Je ne sais pas s’il existe d’autres options.