Programmtests mit jUnit

christophL

Grünschnabel
Hallo,

ich will einen jUnit-Test für mein Taschenrechner-Programm schreiben...

Mein Rechner-Programm kann die 4 Grundrechenarten und verwendet dazu ein selbstgebasteltes Interface "Stack" (ausimplementiert als Array oder LinkedList).
Parameter und postfix-Ausdruck werden als String[] args übergeben ( also z.B. "java calc a 2 3 +" liefert 5 und verwendet zum Berechnen die Array-Stack-Klasse).


Wie das Testen der Array-Stack- bzw. LinkedList-Stack-Klasse geht ist mir klar, die beiden Tests unterscheiden sich aber nur in der "setUp()"-Methode beim Konstruktor - da muß es doch einen besseren Weg geben.

Hauptsächlich aber find' ich überhaupt keinen Ansatz für das Testprogramm für meine triviale Rechner-Klasse, weil diese
1. allen Input schon per String-Array args[] bekommt,
2. keine Methoden enthält (d.h. im Wesentlichen nur aus einer Schleife, die bei Zahlen pusht und bei Operatoren entsprechend popt, besteht) und
3. keinen Wert zurückgibt sondern das Ergebnis einfach ausdruckt.
Ich weiß nicht wie ich der Rechner-Klasse aus der Testklasse heraus Parameter übergeben kann und wie ich sowas wie ein "assertTrue()" durchführen soll wenn das Ding Ergebnisse nur per System.out.println() ausspuckt...

... und bin für jeden Hinweis höchst dankbar!
 
Da hab' ich wohl zu früh gepostet - gestern Nacht ist mir dann eine Lösung eingefallen:

Das Rechner-Programm so umschreiben, dass es eine Methode gibt die für String-Arrays double-Ergebnisse (oder eben Fehler) zurückgibt und dann diese Methode testen.

Die Tests für die zwei Stack-Realisierungen sind nicht komplett gleich, bei der verlinkten Liste könnt ich z.B. die Listenelemente testen - natürlich sind Tests wie "pop() auf einem leeren Stack" ident - das stört mich noch immer ein wenig ...
 
Zurück