CPPUnit: aktuellen Test in setUp ermitteln
-
Hallo,
gibt es eine Möglichkeit innerhalb der Methoden "setUp()" bzw. "tearDown()" den aktuellen TestCase zu ermitteln?
Ich hab verschiedene Tests, deren Vor- und Nachbereitung sehr änlich ist. Insbesondere bei der Nachbereitung hab ich das Problem, dass ich diese nicht in der Testmethode machen kann. Wenn ein Assert geworfen wird, bricht die Testmethode ab, ohne die Nachbereitung durchzuführen. Dazu ist ja auch die tearDown()-Methode da, nur muss ich hier wissen, welcher Test ausgeführt wurde. Ich könnte mir in der Testmethode auch in einer Variable merken, welcher Test ausgeführt wurde und diese im tearDown auswerten, aber das würde nur das Problem mit dem tearDown lösen. Ich würd auch schon gern im setUp() wissen, welcher Test ausgeführt wird.
thx
-
Ich kenne CppUnit nicht (nur JUnit). Aber C++ hat keine Reflection und auch sehr minimale Runtime Type Informations, da wird es schwer ohne zusätzliche User- oder Makro-Arbeit solche Informationen zu bekommen. Im TUT-Framework (welches ich pers. für C++ nutze), muß man das halt als Anwender den Tests den Testnamen als String-Literal mitgeben. Ganz pragmatisch.
Zu dem TearDown(): in C++ sollte sowas durch einen Destructor erledigt werden, bzw. dieser sollte TearDown() aufrufen. Gibt es in CppUnit kein Test-Datenobjekt, das nach einer Testreihe autom. zerstört wird? So das dieses Test-Datenobjekt aufräumt? So ist es zumindest in TUT gelöst.
Ich vermute mal, CppUnit ist nicht so ein gutes Testframework. Es wurde Eins zu Eins von JUnit adaptiert, und passt irgendwie nicht in die C++-Welt. Ich war damals, als ich nach einem Testframework suchte, jedenfalls von CppUnit nicht begeistert.
-
Danke für die Anwort.
Hab es jetzt so gelöst, das ich im setUp die Zeiger auf die Objekte, die in den Unterschiedlichen Tests verwendet werden, auf NULL setze. Im tearDown prüf ich auf != NULL ab und zerstöre gegebenenfalls die Objekte, die von dem Test angelegt wurden. Jetzt werden alle Tests auch bei Testabbruch korrekt aufgeräumt.