test driven development (TDD)
&
Refactoring
Anforderungen
1. Die Methode kann 0, 1 oder 2 Zahlen addieren.
Die Zahlen werden durch ein Komma getrennt.
Ein leerer String entspricht der Summe 0 + 0.
2. Die Methode kann eine beliebige Anzahl von
Zahlen addieren
3. Die Zahlen können auch von anderen Zeichen
getrennt werden
2. IMPLEMENTIERUNG
public class StringCalculator {
public static int add(final String numbers) {
String[] numbersArray = numbers.split(",");
if (numbersArray.length > 2) {
throw new RuntimeException("Up to 2 integers separated by comma (,) are allowed");
} else {
int sum;
for (String number : numbersArray) {
sum += Integer.parseInt(number);
}
return sum;
}
}
}
import org.junit.Test;
public class StringCalculatorTest {
@Test(expected = RuntimeException.class)
public final void whenMoreThan2NumbersThenException() {
StringCalculator.add("1,2,3");
}
@Test
public final void when2NumbersThenNoException() {
StringCalculator.add("1,2");
Assert.assertTrue(true);
}
@Test(expected = RuntimeException.class)
public final void whenNonNumberThenException() {
StringCalculator.add("1,X");
}}
1. TESTCASE
White
Box
Test
grey
Box
Test
Black
Box
Test
White-Box-Test
- Algorithmus und Test vom selben Entwickler
- erst Code, dann Test
- billig
- plattformspezifische Tests
- fehleranfällig
- nicht plattformübergreifend
BLACK-Box-Test
- Algorithmus und Test von verschiedenen Entwicklern
- objektive Verifikation
- plattformübergreifende Tests
- teuer und personenintensiv
- benötigt sehr präzise Spezifikation
Grey-Box-Test
- Algorithmus und Test vom selben Entwickler
- erst Test, dann Code
- relativ günstig
- objektive Verifikation
- plattformübergreifende Tests
- hohe Verantwortung für Entwickler
Refactoring
Vorteile DES TDD
- Testentwicklung vor dem Coding
- kein Zeitdruck
- gute Dokumentation
- vollautomatische Testcases
- Kurze Test-Code-Refactor Zyklen
- Tests überschaubar
- Bugs im Keim erstickt
- Code leicht lesbar & wartbar
TDD LOHNT sich
TDD
By Jan Kleiss
TDD
- 411