Ich habe sowohl CppUnit
als auch boost::test
für C++ Unittesting verwendet. Im Allgemeinen bevorzuge ich boost::test
, hauptsächlich weil die automatischen Testmakros den Aufwand minimieren, um Tests einzurichten. Aber eine Sache vermisse ich wirklich von CppUnit
: Die Fähigkeit, Ihre eigenen "Beschützer" zu registrieren, deren Instanzen automatisch alle Lauftests durchlaufen. (Technisch installieren Sie einen Test "Listener", und das kann jeden Test in einem Schutzbereich umhüllen).Entspricht CppUnit-Schutz für boost :: test?
Ich habe diese unschätzbaren in der Vergangenheit für die Überwachung von Unittests für unerwartete Nebenwirkungen gefunden (z. B. Prüfcode hat die Floating-Point-Unit-State-Flags nicht geändert). Ich kann kein Äquivalent in der boost::test
documentation sehen, obwohl BOOST_FIXTURE_TEST_CASE
vielleicht am nächsten kommt.
Haben Sie Vorschläge, wie Sie die gleichen Vorteile wie die CppUnit-Protektoren in boost::test
erzielen?
(Ich habe noch nicht wirklich in die Implementierung boost::test
geschaut, aber wenn es etwas wie CppUnit
ist, muss es etwas sehr ähnliche Beschützer selbst verwenden).
CppUnit Hörer/Protektoren geben Sie die Bequemlichkeit der RAH-scoped Tests in (oder um) jeden Test, aber ohne mühsam eine Zeile Code zu jedem Test hinzufügen. Danke für die Hinweise auf globale Fixtures ... wenn es nur etwas Entsprechendes gäbe, wo der ctor/dtor für jeden Testlauf aufgerufen wurde, wäre das perfekt, aber ohne dass er alle meine BOOST_AUTO_TEST_CASE mit BOOST_FIXTURE_TEST_CASE global ersetzt und Protektor-ähnliches Gebilde erstellt Checks in das mitgelieferte Gerät scheint die beste Wette. – timday
Ah, ich denke, ich verstehe es. Sie möchten, dass dieses RAII-Objekt um jeden einzelnen Testfall in jeder Testsuite gewickelt wird, ohne es für jeden Test explizit angeben zu müssen? Meine beste Wette wäre ein einfaches Wrapper-Makro, das auf BOOST_FIXTURE_TEST_CASE erweitert wird, wobei Ihr Schutzobjekt in die erste Zeile eingefügt wird. – jalf
Interessante Idee klingt jedoch wie eine nützliche Ergänzung. Fühlen Sie sich frei, es den Autoren der Boost-Bibliothek vorzuschlagen;) – jalf