DbUnit Beispiel: DbUnit mit JUnit 4

Einleitung:

DbUnit arbeitet mit eigenen Testklassen, die auf JUnit 3 basieren. Das Arbeiten mit den DbUnit Testklassen bringt den Vorteil, dass dem Benutzer einige Methoden zur Verfügung gestellt werden, deren Funktionalität sonst erst implementiert werden muss. Der Nachteil dabei ist die zwingende Bindung an das JUnit 3 Framework. Dieses Beispiel zeigt, wie DbUnit auch mit JUnit 4 eingesetzt werden kann, wobei das Prinzip auch auf andere Frameworks wie TestNG oder das Arbeiten ohne Framework übertragbar ist.

Vorbereitung:

Dieses Beispiel arbeitet mit einer JavaDB Datenbank im client/server Modus. JavaDB muss installiert und der Server gestartet sein. Außerdem wird eine angelegte Datenbank benötigt. In dem Beispiel wird eine Datenbank mit dem Namen "javadb", dem Benutzernamen "myUsrName" und dem Passwort "myPwd" verwendet. Wenn die Datenbank unter einem anderen Namen oder mit anderem Benutzer angelegt wurde, müssen die Parameter im Beispielcode entsprechend angepasst werden.

Projekt anlegen:

Das Projekt wird als normales Java Projekt angelegt. Als Bibliotheken müssen folgende .jar Dateien hinzugefügt werden:

Ergebnis


Die folgenden .xml Dateien müssen im Projektordner erstellt werden:
Datensatz für Ausgangszustand der Testdatenbank: dataset.xml


Datensatz für erwarteten DB Zustand nach Test: test1.xml


Beispielcode:

Da die DbUnit eigenen Testklassen nicht verwendet werden, muss die JDBC Verbindung manuell aufgebaut werden und der DbUnit DatabaseConnection klasse übergeben werden. In diesem Beispiel werden die Datenbankverbindungen in einer separaten Klasse "DBConnection.java" verwaltet.

Datenbankverbindungen: DBconnection.java


Testklasse: DbUnitTest.java


Erklärung des Beispiels:

Der erste Test fügt der "testtable" Tabelle einen Eintrag hinzu und vergleicht den so entstandenen neuen Datensatz mit dem erwarteten, der aus "test1.xml" geladen wird.
Der zweite Test löscht einen Eintrag und vergleicht ebenfalls mit "test1.xml", was zum scheitern des Tests führt. Außerdem wird das schreiben eines Datensatzes in eine .xml Datei demonstriert.
Zwischen den Tests wird die Datenbank von der DbUnit Testklasse automatisch auf den gleichen Ausgangszustand gebracht, der in dataset.xml definiert ist.