Meffert IT Consulting

JUnit Profi Tipps


JUnit Profi-Tipps kaufen

Weitere Ressourcen

Singleton testen

Das Fewton

GoF-Entwurfsmusterbuch

Verhaltensmuster

Strukturmuster

Das Entwurfsmuster Iterator testen

Der folgende Text ist ein Auszug aus dem Buch
JUnit Profi-Tipps - Software erfolgreich testen

Iterator ist ein Verhaltensmuster und wurde populär durch das Buch Entwurfsmuster - Elemente wiederverwendbarer objektorientierter Software von Erich Gamma, Richard Helm, John Vlissides und Ralph Johnson.

Die korrekte Funktionsweise einer Iterator-Implementierung kann einfach geprüft werden, indem das Ergebnis von hasNext() und next() mit einer parallel durchlaufenen Schleife über die zugrunde liegende Liste verglichen wird.

Um das Beispiel zu verkürzen, wird hier der Test für die in der Klasse java.util.Vector integrierte Iterator-Implementierung durchgeführt.

import java.util.*;
...
public void testIterator() {
 
List l = new Vector();
 
l.add("Eintrag 1");
 
l.add("Eintrag 2");
 
l.add("Eintrag 3");
 
Iterator it = l.iterator();
 
int i = 0;
 
while (it.hasNext()) {
   
if (i >= l.size())
     
fail("hasNext fehlerhaft: kein Abbruch");
   
String ist = (String)it.next();
    
String soll = (String)l.get(i);
   
i++;
   
assertEquals(soll, ist);
 
}
 
if (i < l.size())
   
fail("hasNext fehlerhaft: vorzeitiger Abbruch");
}

Listing 1: Testen einer Iterator-Implementierung

In diesem Listing werden zwei Tests durchgeführt. Erstens wird geprüft, ob die Listenelemente in der erwarteten Reihenfolge iteriert werden und zweitens, ob alle Elemente berücksichtigt werden. Im zweiten Fall kann es vorkommen, dass entweder zu wenige oder zu viele Elemente traversiert werden sollen. Für jede der beiden Möglichkeiten wird im Fehlerfall eine unterschiedliche Fehlermeldung ausgegeben.