J'ai utilisé à la fois CppUnit
et boost::test
pour C++ unittesting. En général, je préfère boost::test
, principalement parce que les macros d'auto-test minimisent les efforts pour configurer les tests. Mais il y a une chose qui me manque vraiment chez CppUnit
: la possibilité d'enregistrer vos propres "protecteurs", dont les instances enveloppent automatiquement tous les tests d'exécution. (Techniquement, vous installez un test "écouteur", et qui peut envelopper chaque test dans une portée protector).Equivalent des protections CppUnit pour boost :: test?
J'ai trouvé ces informations précieuses dans le passé pour surveiller les tests unitaires d'effets secondaires inattendus (par exemple, le contrôle du code n'a pas modifié les indicateurs d'état des unités à virgule flottante). Je ne peux pas voir d'équivalent dans le boost::test
documentation, bien que BOOST_FIXTURE_TEST_CASE
se rapproche peut-être le plus proche.
Des suggestions sur la meilleure façon de réaliser la même chose que les protections CppUnit dans boost::test
?
(Je n'ai pas encore vraiment examiné l'implémentation de boost::test
, mais si c'est quelque chose comme CppUnit
il doit utiliser quelque chose comme des protecteurs lui-même).
auditeurs/protecteurs CppUnit vous donnent la commodité des tests RAII scope (ou autour) chaque test, mais sans avoir à ajouter fastidieusement une ligne de code à chaque test. Merci pour les pointeurs vers les projecteurs globaux ... s'il y avait juste un équivalent où le ctor/dtor était invoqué pour chaque exécution de test, ce serait parfait, mais sans global-remplaçant tous mes BOOST_AUTO_TEST_CASE avec BOOST_FIXTURE_TEST_CASE et construisant comme des protecteurs Les chèques dans le luminaire fourni semblent être le meilleur choix. – timday
Ah, je pense que je comprends. Vous voulez que cet objet RAII entoure chaque cas de test dans chaque suite de tests, sans avoir à le spécifier explicitement pour chaque test? Mon meilleur pari serait une macro encapsuleur simple qui se développe à BOOST_FIXTURE_TEST_CASE avec votre objet protecteur inséré sur la première ligne. – jalf
Idée intéressante cependant, semble être un ajout utile. N'hésitez pas à le suggérer aux auteurs de la bibliothèque Boost;) – jalf