PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sinn von Unit-Tests?



SeeksTheMoon
21-12-2003, 09:05
Ich dachte bisher immer, Unit-Tests starten ein Programm oder einen Codeteil von mir und checken den durch.
Dazu muss ich dem Unit Programm sagen wie es das machen soll und was es machen soll.
Jetzt interessiert mich besonders ein Unit-Programm für C++.
Auf sourceforge hab ich cppunit gefunden (http://cppunit.sourceforge.net/), aber in der Anleitung packen die den ganzen Quellcode des zu testenden Programms mit Unit-Anweisungen voll. Das ist doch aber gar nicht Sinn der Sache! Oder doch?
Ich halte es nur für unsinnig, wenn 50% meines Codes aus Anweisungen bestehen, die ich für das Release wieder rauswerfen muss.
Oder entwickelt man das Programm 2 mal, einmal als Test und einmal als Release?
Da ist man mit dem Debugger und manuellen Tests doch schneller...?

anda_skoa
21-12-2003, 13:13
CPP Unit testet funktionale Einheiten, wie zum Beispiel Klassen.

Wir verwenden das in der Firma, um zB zu erkennen, wenn eine Änderung das bisherige Verhalten einer Klasse ändert.

Beispiel: einfache Klasse


class Counter
{
public:
Counter(uint start) : m_value(start) {}
void inc() { m_value++; }
uint value() const { return m_value; }

private:
uint m_value;
};


Ein Unittest könnte so aussehen


Counter c0(0);
CPPUNIT_ASSERT( c0.value() == 0 );
c0.inc();
CPPUNIT_ASSERT( c0.value() == 1 );
Counter c1(10);
CPPUNIT_ASSERT( c1.value() == 10);


Wenn jetzt jemand irrtümlich Counter ändert


class Counter
{
public:
Counter(uint start) : m_value(0) {}
void inc() { m_value++; }
uint value() const { return m_value; }

private:
uint m_value;
};

wird der dritte Test fehlschlagen.

Ciao,
_

SeeksTheMoon
20-01-2005, 11:15
Diese Tests zu erstellen ist oftmals so umfangreich wie der zu testende Code selber, ich habe gelesen dass es Tools gibt, die diese Testsysteme automatisch erstellen.
Kennt jemand ein freies Programm dieser Art für Linux (und ggf. cppunit)?