Inoffizielle Testklasse zu Linja
Bitte führen Sie zur Benutzung der Datei LinjaTest.java die unten genannten Anpassungen durch.
Hinweise zur Verwendung der Testklasse:
Um diese Klasse benutzen zu können, muss sie sich im selben Package befinden wie Linja.java (die zu testende Klasse) und MiniJava.java.
Es sind zusätzlich folgende Anpassungen notwendig:
- In der zu testenden Linja-Klasse alles von
private auf public ändern.
(Unter Windows: STRG+H → Finde und ersetze alle Vorkommen)
- MiniJava um zwei Member-Variablen sp1 und sp2 (Typ
int) erweitern und write-Methoden leeren (einfach damit keine Popups
beim Testen kommen). Diese Änderungen nach dem Testen wieder rückgängig machen
natürlich wieder rückgängig machen:
public static int sp1;
public static int sp2;
public static int write(String output) {} // leer!
-
Für den Test von zaehlePunkte() muss man ans Ende dieser Methode (in der zu testenden Linja-Klasse) noch folgendes anfügen (ganz unten):
wobei <...> durch die jeweilige Variable ersetzt wird, die die Punkte speichert, beispielsweise also:
sp1 = <Punktevariable Spieler 1>;
sp2 = <Punktevariable Spieler -1>;
sp1 = punkteS1;
sp2 = punkteSMinus1;
Aussagekraft des Tests:
Diese Klasse kann bei der Korrektur helfen - sie übernimmt sie nicht!
Wird eine Punktzahl ausgespuckt, so kann man sich mit großer Sicherheit darauf verlassen, dass diese Punktzahl korrekt oder zumindest die Mindestpunktzahl ist. Anderenfalls (z. B. bei [?/1] heißt das, dass keine Punktzahl ermittelt werden konnte. Das muss nicht heißen, dass die jeweilige Methode falsch ist! Es ist durchaus möglich, dass jemand die Methode in seiner Klasse ein wenig anders umgesetzt hat, als urspr. gedacht bzw. vermutet. Terminiert ein Test jedoch bspw. nicht, so ist wohl irgendwo eine Endlosschleife aufgetreten.
Die Fehlermeldungen können bei der Suche des Fehlers hilfreich sein. Dazu gibt es ein paar Optionen, die über die Konstanten in der Testklasse gesetzt werden können:
- Ist PRINT_FAILS auf true gesetzt, dann werden Fehlermeldungen ausgegeben.
- Ist PRINT_ONLY_FIRST_FAIL auf true gesetzt, dann wird nur die erste auftretende Fehlermeldung ausgegeben. Es werden trotzdem alle Testfälle durchgeführt.
- In den einzelnen Methoden gibt es zusätzliche Einstellmöglichkeiten, wobei diese sehr versteckt sind (bspw. durch ein if(true) oder if(false) oder lokale boolesche Variablen).