TDD - Test Driven Development

Der Begriff TDD umfasst ein weites Feld. Ich werde hier den Schwerpunkt zu Beginn auf die Verwendung von jUNit legen. jUnit ist seit recht langer Zeit frei verfügbares Framework zu Erstellung und Durchführung von Tests. Der Grundgedanke ist recht einfach. Es werden für möglichst kleine Quelltextabschnitte bzw Methoden Tests geschrieben, die reproduzierbar sind. Damit kann man diese in eine Ablaufumgebung wiederholt durchführen und eine Veränderung im Verhalten erkennen. Um das Verhalten auf seine definierte Korrektheit hin zu überprüfen wird der Test mit den dafür notwendigen Prüfungen versehen. Der Aufbau komplexer Prüfungen erfolgt durch die Kombination einfacher Grundoperatoren.

Beginnen wir mit einem Beispiel.

public class HelloWorldService {
  public String sayHello() {
    return "hello";
  }
}

Die Funktionsweise ist trivial, soll dennoch automatisch getestet werden. Hierzu definieren wir zunächst in dem Projekt die Abhängigkeiten zu dem TestFramework. Wird maven verwendet, so kann in der pom.xml folgendes hinzugefügt werden.

            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>

Da nun der Zugriff auf die Klassen von jUNit besteht, beginnen wir mit der Implementierung der ersten Tests. Damit sichergestellt wird, das die Testimplementierungen nicht in den Produktionsquellen enthalten sind, werden die Tests in den dafür vorgesehenen Verzeichnissen abgelegt. Bei Maven ist das unter src/test/java

Die Implementierung selbst ist recht einfach und muss nur wenigen grundsätzlichen Anforderungen genügen.

  @Test
  public void test001() throws Exception {
    final HelloWorldService service = new HelloWorldService();
    final String hello = service.sayHello();
    Assert.assertNotNull(hello);
    Assert.assertEquals("hello", hello);
  }

Der Test selbst wird genauso geschrieben, wie man den Service verwenden würde. Dazu kommen dann die Überprüfungen der Ergebnisse. Es werden hier zwei Tests in einer Testmethode definiert. Der erste Test überprüft, ob ein Ergebnis ungleich null geliefert worden ist. Der zweite Tests vergleicht den Inhalt der Antwort mit dem Inhalt der erwartet wird. Damit der Test ausgeführt werden kann, ohne das eine main - Methode geschrieben werden muss, wird die Methode mit der Annotation @Test versehen. Das Framework selbst sucht nach Methoden mit dieser Annotation und führt diese dann in einer nicht genau definierten Reihenfolge aus. Damit ist auch einer der wichtigsten Grundregeln bei der Erstellung von jUNit-Tests ableitbar. Jeder Test muss für sich selbst lauffähig sein und darf keine Annahmen darüber treffen welcher Test vorher und welcher Test nachfolgend ablaufen wird.

results matching ""

    No results matching ""