Auf Thema antworten

Nehmen wir mal an, Du hast eine Methode mit der Signatur [icode]int plus(int a, int b)[/icode] und diese Methode soll die Summe von a und b liefern, sofern das Ergebnis in ein int passt, ansonsten eine ArithmeticException auslösen.


Jetzt kannst Du Dir Testfälle überlegen, hier also Belegungen von Parametern. Für jeden Testfall weißt Du ja, was als Ergebnis erwartet wird. Du könntest Dir also überlegen: plus(0,0) muss 0 liefern, plus(x, 0) natürlich x, genauso wie plus(0,x) für nicht-negative x und negative x. Du könntest positive Werte x,y addieren oder einen negativen Wert mit einem positiven und umgekehrt. Du könntest Integer.MAX_VALUE für den Parameter a und 1 für den Parameter b verwenden, um zu testen, ob die Exception ausgelöst wird. Du könntest Integer.MAX_VALUE für den Parameter a und 0 für den Parameter b verwenden, um zu testen, ob die Exception an dieser Grenze nicht ausgelöst wird usw.


Den Testfall "plus(0,0) muss 0 liefern" könnte man (sehr ausführlich) wie folgt implementieren:

[code=Java]

int erwartetesErgebnis = 0;

int paramA =0;

int paramB = 0;

int tatsaechlichesErgebnis = plus(paramA, paramB);

if (tatsaechlichesErgebnis != erwartetesErgebnis) {

    System.err.printf("Test schlug fehl. plus(%d, %d); erwartetes Ergebnis %d, war jedoch %d%n",

            paramA, paramB, erwartetesErgebnis, tatsaechlichesErgebnis);   

    System.exit(1);

}

[/code]


Wenn Ihr JUnit verwendet (hier sehr kurz):

[code=Java]

@Test

public void plusSoll0Liefern() {

    assertEquals(0, plus(0,0));

}

[/code]



Oben