Dans le processus de définition de notre cadre de test unitaire C++ pour les années à venir, nous avons présélectionné GoogleTest y CppUnit . J'ai une certaine expérience des deux et ma préférence va à GoogleTest. Quoi qu'il en soit, pour convaincre mon patron, j'ai besoin de faits J'ai donc fait quelques lectures sur Internet, notamment les manuels, les pages wiki et certaines sources. Je suis arrivé à une liste d'avantages de GoogleTest et d'un seul avantage de CppUnit (exécuteurs de tests graphiques). Les voici classés par perception de l'utilité :
- INSTANTIATE_TEST_CASE_P pour instancier un scénario de test avec n'importe quel ensemble de paramètres, y compris les produits cartésiens.
- FRIEND_TEST pour tester les membres privés des classes (pour tout le code hérité).
- transformer les alertes en points d'arrêt
- alertes non fatales
- intégration "out of the box" de googlemock
- 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 à l'aide de modèles de noms
- tests paramétrés par valeur/type
- assertions de prédicats définies par l'utilisateur
- tests de décès
- un ensemble beaucoup plus riche d'assertions
- type d'affirmation
- assertion sur les sous-routines
- des informations de débogage supplémentaires peuvent être ajoutées aux assertions en utilisant <<
- 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 de l'intérieur d'une sous-routine ou d'une boucle.
- La sortie XML de xUnit, peut être affichée par Jenkins immédiatement sans transformation XSLT entre les deux.
- prend en charge les imprimantes de type personnalisé
- temps consommé par l'indication du test (je soupçonne que cela est également possible avec CppUnit mais je n'ai pas encore trouvé)
- API d'écoute d'événements de test (plug-ins définis par l'utilisateur)
- brassage des tests
- sans exception et RTTI
Ai-je raison de supposer que tous les éléments ci-dessus ne sont pas pris en charge par CppUnit ? Existe-t-il une fonctionnalité utile de GoogleTest non disponible dans CppUnit que je manque ?
Et le dernier mais non le moindre : Y a-t-il des fonctionnalités de CppUnit que GoogleTest peut utiliser ? manque ?
Merci !