Bei der Festlegung unseres C ++ - Unit-Test-Frameworks für die nächsten Jahre haben wir GoogleTest und CppUnit in die engere Wahl gezogen . Ich habe einige Erfahrungen mit beiden und meine große Vorliebe ist GoogleTest. Um meinen Chef zu überzeugen, brauche ich einige Fakten, also habe ich im Internet gelesen, einschließlich der Handbücher, Wiki-Seiten und einiger Quellen. Ich habe eine Liste mit GoogleTest-Vorteilen und einen einzelnen CppUnit-Vorteil (grafische Testläufer) erstellt. Hier sind sie nach wahrgenommener Nützlichkeit geordnet :
- INSTANTIATE_TEST_CASE_P, um einen Testfall mit einem beliebigen Parametersatz zu instanziieren, einschließlich kartesischer Produkte
- FRIEND_TEST zum Testen privater Klassenmitglieder (für den gesamten Legacy-Code)
- Asserts in Haltepunkte verwandeln
- nicht tödliche Behauptungen
- "out of the box" Googlemock-Integration
- automatische Testerkennung, keine Aufzählung erforderlich
- Tests können deaktiviert und aktiviert werden
- Die auszuführenden Tests können anhand von Namensmustern ausgewählt werden
- wert- / typparametrierte Tests
- benutzerdefinierte Prädikat-Asserts
- Todestests
- viel reichhaltiger Satz von Behauptungen
- Typ behauptet
- Behauptung auf Unterprogrammen
- Zusätzliche Debug-Informationen können zu Asserts mit << hinzugefügt werden
- RecordProperty gibt den letzten Wert der Eigenschaft an die XML-Ausgabe aus
- SCOPED_TRACE hilft dabei, den Kontext eines Assertionsfehlers zu verstehen, der aus einer Subroutine oder Schleife stammt.
- Die XML-Ausgabe von xUnit kann von Jenkins sofort ohne dazwischen liegende XSLT-Transformation angezeigt werden
- unterstützt benutzerdefinierte Druckertypen
- Zeitaufwand für die Testanzeige (Ich vermute, dass dies auch mit CppUnit möglich ist, aber ich habe es noch nicht herausgefunden)
- Test Event Listener API (benutzerdefinierte Plug-Ins)
- Test mischen
- Keine Ausnahmen und RTTI
Bin ich zu Recht davon ausgegangen, dass alle oben genannten Funktionen von CppUnit nicht unterstützt werden? Gibt es eine nützliche GoogleTest-Funktion , die in CppUnit nicht verfügbar ist ? Ich vermisse sie.
Und zu guter Letzt: Gibt es nette CppUnit-Funktionen, die GoogleTest fehlen ?
Vielen Dank!