Zum Inhalt springen

CppUnit

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 30. Dezember 2006 um 20:14 Uhr durch Rorkhete (Diskussion | Beiträge) (Grammatik, typos). Sie kann sich erheblich von der aktuellen Version unterscheiden.

CppUnit ist ein Unit-Test-Framework für die Programmiersprache C++. Es ist dem Java-Tool JUnit nachempfunden.

CppUnit testet Programmeinheiten (meistens Klassen) auf Fehler. Zur Erstellung eines neuen Tests wird eine neue Klasse erstellt, die mit CppUnit-Makros erweitert wird. Die Methoden der Klasse werden als Test registriert. Innerhalb der Methoden können nun Methoden anderer Klassen getestet werden. Dabei testet man üblicherweise, ob eine konkrete Eingabe eine richtige Ausgabe produziert. Die Ergebnisse der Tests können maschinenlesbar in XML, als Textausgabe oder mit den mitgelieferten GUI-basierten Programmen angezeigt werden.

Features

CppUnit hat folgende Eigenschaften:[1]

  • XML-Ausgabe mit Elementen für zusätzliche Angaben
  • Compiler-ähnliche Text-Ausgabe für die Integration in IDEs
  • Makros für die einfache Erstellung von Test-Suites
  • Unterstützung von hierarchischen Tests (Tests, die aus einfacheren Tests zusammengesetzt werden)
  • Test-Registrierung zur schnelleren Codegenerierung
  • Test-Plug-In für schnellere Compile/Test-Zyklen (Selbsttest-fähige dynamische Bibliothek)
  • Schutzmechanismus zur Kapselung der Testausführung, ermöglicht das Abfangen von Ausnahmen, die nicht von der Standard-Ausnahme (std::exception) abgeleitet sind.
  • MfcTestRunner, ein auf den Microsoft-Foundation-Classes (MFC) basierender Test-Runner
  • QtTestRunner, ein auf Qt basierender grafischer Test-Runner
  • QxTestRunner, ein auf Qt4 basierender grafischer Test-Runner
  • CursesTestRunner, ein auf Curses basierneder Test-Runner
  • WxWidgetsTestRunner, ein auf wxWidgets basiernder Test-Runner

Beispiel

Dieses Beispiel zeigt einen Unit-Test. Die Klasse Kalkulator ist das zu testende Objekt, KalkulatorTest der Unit-Test. (Für die Ausführung des Tests muss der Programmstartpunkt modifiziert werden.)

Klasse Kalkulator

   ...
   class Kalkulator
   {
       // Berechne die Wurzel von k
       double square(double k) { return sqrt(k); }
   };

Klasse KalkulatorTest

   #include <cppunit/extensions/helpermacros.h>
   
   class KalkulatorTest : public CPPUNIT_NS::TestFixture
   {
	CPPUNIT_TEST_SUITE( KalkulatorTest );
       CPPUNIT_TEST( testSqrt );
       CPPUNIT_TEST_SUITE_END();
       
       public:
           void testSqrt();
   };
   
   CPPUNIT_TEST_SUITE_REGISTRATION( KalkulatorTest );
   
   void KalkulatorTest::testSqrt() {
       Kalkulator kalk;
       CPPUNIT_ASSERT(kalk.square(9) == 3);
   }

Einzelbelege

  1. http://cppunit.sourceforge.net/cppunit-wiki/FrontPage, 25. Oktober 2006