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!
quelle
Antworten:
Wenn Sie eine ältere Version des gcc-Compilers verwenden oder wenn Ihr zu testender Code unter vxWorks (oder VxSim) ausgeführt wird, haben Sie mit cppUnit möglicherweise eine bessere Chance als mit dem Googletest-Framework.
Ein weiteres Merkmal des Googletest-Frameworks ist die Verfügbarkeit von 3 verschiedenen Ebenen für das Einrichten / Herunterfahren:
Ich bin mir nicht sicher, ob dies in cppUnit unterstützt wird, aber dies kann sehr praktisch sein, insbesondere bei Legacy-Systemen.
Außerdem gibt es ein Googletest-Plugin für Eclipse CDT.
quelle
Wenn Sie sich xUnit ++ nicht angesehen haben , habe ich es speziell gemacht, weil ich mit dem, was verfügbar war (einschließlich gtest), unzufrieden war. Der größte Teil Ihrer Liste wird unterstützt, und wenn nicht, wäre ich wahrscheinlich bereit, sie hinzuzufügen, wenn es sich um ein "Muss" handelt.
quelle
Das sind die Vorteile, die ich sehe. Es gibt einige GUI-Testläufer:
Ich habe das erste verwendet und es funktioniert ziemlich gut, obwohl es sich in der Entwicklung befindet und etwas Arbeit benötigt. Ich weiß nicht, ob es andere Möglichkeiten gibt.
quelle