2.2.2. Test-Phase

In der Test-Phase wird der eigentliche Test in Form einer Methode aufgerufen. Da die initialen Testdaten zu diesem Zeitpunkt bereits in der Datenbank vorhanden sind, kann sich der Software-Entwickler auf die fachlichen Aspekte des Tests konzentrieren. In der Regel werden Methoden aufgerufen, die Daten aus der Datenbank lesen oder manipulieren. Die Aufgabe des Tests besteht somit zum einen darin, die Rückgabewerte der Methoden zu überprüfen. Zum anderen muss überprüft werden, ob der Zustand in der Datenbank korrekt ist.

In dem aktuellen Beispiel wird die Test-Methode testInsertUser aufgerufen. Diese Methode testet, ob die Methode save in der Klasse UserDao einen neuen Eintrag in der Datenbank anlegt. Zu diesem Zweck wird zunächst ein neues User-Objekt mit dem Namen „Homer Simpson“ und dem Geburtsdatum „16.09.1946“ erzeugt. Dieses Objekt wird an die save-Methode des UserDao-Objekts übergeben. Der Rückgabewert der save-Methode wird über die JUnit-Methode assertTrue validiert. Wenn diese Prüfung erfolgreich ist, wird die Korrektheit des Datenbankinhalts geprüft. 

Zur Überprüfung des Datenbankinhalts bietet checkerberry db im Wesentlichen drei Methoden an: assertInitialDataUnchanged, assertEqualsInitial und assertEqualsExpected.

Die Methode assertInitialDataUnchanged stellt sicher, dass die initialen Testdaten in der Datenbank nicht verändert wurden. In dem aktuellen Beispiel prüft checkerberry db, ob die Einträge für Marge, Bart, Lisa und Maggie Simpson in der Datenbank mit den Werten aus den initialen Testdaten übereinstimmen. Dies ist wichtig beim Testen von lesenden Funktionen, da diese Funktionen den Datenbankinhalt nicht verändern dürfen. Gerade bei der Verwendung von Hibernate ist diese Überprüfung wichtig, da Änderungen in der Hibernate-Session auch bei lesenden Datenbankzugriffen eine Änderung in der Datenbank hervorrufen können. Das Hinzufügen neuer Datensätze wird von der Methode assertInitialDataUnchanged ignoriert. Es ist also zulässig, einen neuen Datensatz anzulegen und mit dieser Methode zu prüfen, ob die bereits bestehenden Datensätze von dieser Änderung unberührt blieben.

Um zu überprüfen, ob die Datenbank gar nicht verändert wurde, steht die Methode assertEqualsInitial zur Verfügung. Dies betrifft jedoch nur die in der mit „initial“ bezeichneten XML-File angegebenen Tabellen. Nicht aufgeführte Tabellen werden nicht überprüft.

Die Methode assertEqualsExpected vergleicht den aktuellen Datenbankinhalt mit den erwarteten Testdaten. Die erwarteten Testdaten werden analog zu den initialen Testdaten definiert. Allerdings wird für erwartete Testdaten das Suffix result anstelle von initial verwendet.

Für das aktuelle Beispiel werden die erwarteten Testdaten in der Datei UserDaoTest_testInsertUser_result.xml definiert. Diese Datei hat den folgenden Inhalt:

Beispiel 2.3. Beispiel UserDaoTest_testInsertUser_result.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE dataset PUBLIC "-//ConceptPeople//DTD sample-db 1.0//EN"
  "../sample-db.dtd">

<dataset>
  <USERS NAME="Bart" SURNAME="Simpson" BIRTHDATE="2009-03-18"/>
  <USERS NAME="Lisa" SURNAME="Simpson" BIRTHDATE="2009-03-18"/>
  <USERS NAME="Maggie" SURNAME="Simpson" BIRTHDATE="2009-03-18"/>
  <USERS NAME="Marge" SURNAME="Simpson" BIRTHDATE="2009-03-18"/>
  <USERS NAME="Homer" SURNAME="Simpson" BIRTHDATE="1946-09-16"/>
</dataset>


Anhand der erwarteten Testdaten stellt checkerberry db sicher, dass die Datenbanktabelle USERS fünf Einträge mit den definierten Spaltenwerten beinhaltet.

Die Methode assertEqualsExpected überprüft nur Tabellen, die in den erwarteten Testdaten angegeben sind. Für das Beispiel bedeutet dies, dass in der Datenbank neben der USERS-Tabelle weitere Tabellen mit beliebigen Werten definiert sein können. Der Inhalt dieser Tabellen wird jedoch nicht geprüft, da sie nicht in den erwarteten Testdaten aufgeführt sind.