A
Naja, eigentlich will er wohl einfach nur wissen wie man Test schreibt. Und er will wohl wissen, wie man seinen geposteten Code testen kann. OK, ist eine katastrophale Vorbedingung die er da vorlegt. Aber hier mal in ein paar Sätzen wie man das anstellen kann.
Erstmal sollte man so programmieren, das man auch Funktionen hat, die man testen kann. Denn das Codebeispiel ist praktisch in der Form untestbar. Da muß man erstmal refactorn. Weiterhin frage ich mich (und die anderen) zu Recht, was die zwei identischen Codebeispiele sollen. Ergibt in keiner Situation Sinn.
So, jetzt aber mal so wie der Code aussehen könnte, damit er überhaupt testbar ist:
// Bruttorechner.cpp
#include <iostream>
#include "Bruttorechner.hpp"
using namespace std;
// Funktion die getestet werden muss.
double calcBrutto(double netto) {
return netto * 1.16;
}
int main() {
double nettobetrag;
cout << "Nettobetrag: ";
cin >> nettobetrag;
cout << "Bruttobetrag (inkl. 16% Mwst.): "
<< calcBrutto(nettobetrag);
<< endl;
}
So, und dann schreibt man sich ein Progrämmchen, das sich z.B. BruttoTest nennt.
Das dann so aussehen könnte:
#include <iostream>
#include "Bruttorechner.hpp"
using namespace std;
int main() {
cout << "Test: calcBrutto()" << endl;
double r = calcBrutto(10);
if( r != 11.6)
cout << "falsch! ist " << r << " sollte sein " << 11.6 << endl;
else
cour << "OK." << endl;
}
So könnte man Testcases schreiben. Aber so kräpelt man sich einen ab, wenn man große Projekte hat. Deshalb gibts eigentlich Test-Tools und Test-Frameworks, die einem etwas Arbeit abnehmen. (Testfälle muß man natürlich selber noch ausdenken)
Boost (ja ich weiß, ist kein ISO-Standard) hilft hier z.B. weiter, die haben eine Test-Library die sie auch für ihre eigenen Boost-Libs einsetzen.
http://www.boost.org/libs/test/doc/index.html
UNd dann gibts noch das berühmte JUnit (Java) als C++ Port:
http://cppunit.sourceforge.net/cppunit-wiki/FrontPage
So, viel Spaß mit den Testcases.