TestDrivenDevelopment Tim Wetegrove

Werbung
Fortgeschrittene Programmierung in Java
Tim Wetegrove
11. Mai 2012
Bereits geschriebener Code lässt sich im
nachhinein nur schwer Testen, wenn er nicht
testbar entworfen wurde.
Änderungen führen oft zu unerwarteten
Fehlern.
Fehlersuche kann dann sehr aufwendig sein.
Tests machen Fortschritte „greifbar“
Tests setzen „Milestones“ und sichern damit
die Funktionalität des Codes
Qualitätsbewusste Programmiertechnik
Entwicklung in kleinen Schritten
Hilft das richtige Programm zu entwickeln
Test schreiben bevor das Programm
geschrieben wird
Erster Test muss fehlschlagen
Danach Programm ergänzen, sodass der Test
erfolgreich verläuft
Jede Programmänderung wird durch einen
automatisierten Test motiviert!
Bevor neuer Code geschrieben wird, wird ein
neuer Test geschrieben.
Bevor der bestehende Code geändert wird,
wird der bestehende Test geändert.
Bevor Fehler im Code gesucht und repariert
werden, wird der verantwortliche Test
repariert.
Unit Tests testen Programmteile isoliert von
anderen
Reichweite von Methoden über Klassen bis
hin zu Komponenten
JUnit als Framework für diese Tests
De-facto-Standard für Entwicklungstests
„Assert“ Methoden im Überblick:
assertTrue(boolean condition)
z.B. : assertTrue(1 == 1);
assertFalse(boolean condition)
assertEquals(Object expected, Object actual)
assertEquals(String expected, String actual)
assertEquals(int expected, int actual)
…(double expected, double actual, double delta)
Delta: Toleranz bei Fliesskommazahlen
assertNull(Object object)
◦ Referenz ist null
assertNotNull(Object object)
◦ Referenz ist nicht null
◦ z.B.: assertNotNull(store.getMovie(1));
assertSame(Object expected,Object actual)
◦ Sichert die Idientiät zweier Objekte zu
assertNotSame(Object expect., Object actual)
Assert Methoden funktionieren auch mit float,
long, boolean, byte, char und short.
1. Testfallerzeugung:
◦ Framework durchsucht Testklasse nacht test…Methoden und erzeugt ein eigenes Objekt der
Klasse.
2. Testlauf:
◦ JUnit führt die gesammelten Testfälle voneinander
unabhängig aus. Reihenfolge ist undefiniert
Testfälle müssen isoliert von einander
ausführbar sein!
Von einander abhängige Test sollten zu
einem Testfall zusammengefasst werden.
CustomerTest
setUp
testRentMovie…
tearDown
Testen von Exceptions, fail-Anweisung
◦ Ein Beispiel:
JUnit unterscheidet hier zwischen Failure und
Error
◦ Failure: Fehlgeschlagene Zusicherung im Test
◦ Error: Unerwartetes Problem wie zum Beispiel eine
NullPointerException (hier nicht weiter behandelt)
Vielen Dank !
Herunterladen