Name

DbUnit

Homepage

http://www.dbunit.org

Lizenz

GNU Lesser General Public License, Version 2.1

Untersuchte Version

DbUnit-2.4.8

Letzter Untersuchungszeitpunkt

28.04.2011

Kurzbeschreibung

DbUnit setzt auf JUnit auf und Erweitert es um die Fähigkeit, mit relationalen Datenbanken umzugehen. Mit Hilfe von DbUnit können Datenbanken, vor dem Ausführen von Tests, in einen bekannten Zustand versetzt werden, damit die einzelnen Tests sich nicht gegenseitig beeinflussen. Außerdem bietet DbUnit die Funktionalität, Datensätze aus- und einzulesen und miteinander zu vergleichen.

Fazit

Das Werkzeug bietet Einsteigern, mit Grundlagenkenntnissen bezüglich relationalen Datenbanken, schon nach kurzer Einarbeitung ein intuitiv nutzbares Hilfsmittel. Es eignet sich auch für größere Projekte, unter der Voraussetzung, dass die von den Entwicklern vorgeschlagenen "best pracitces" eingehalten werden. Speziell bedeutet es, möglichst kleine Test Datensätze zu verwenden, die speziell an die Tests angepasst sind, da sonst Probleme mit der Anordnung von Einträgen und daraus resultierend mit Triggern, foreign Keys etc. auftreten können. Es existieren Werkzeuge, die Teile der Funktionalität von DbUnit oder das ganze Framework sinnvoll ergänzen. Interessant sind z.B. die Tools Unitils und Jailer, da sie Lösungen für einige Probleme mit DbUnit anbieten.

Einsatzgebiete

DbUnit kommt bei Unit Tests mit relationalen Datenbanken zum Einsatz. Darüber hinaus kann es auch dafür verwendet werden, Datensätze ein und auszulesen, zum Beispiel zwecks Datenbank-Migration.

Einsatzumgebungen

DbUnit ist wird unabhängig von IDE's als Bibliothek angeboten. Zum Benutzen müssen jedoch zwangsweise ein Logger und Logging-Fassade "SLF4J" in das Testprojekt eingebunden werden.

Installation

Die Installation von DbUnit ist wegen Abhängigkeiten zu anderen Bibliotheken etwas komplexer. DbUnit selbst muss lediglich als .jar Datei in das Projekt eingebunden werden. Allerdings müssen darüber hinaus noch "Simple Logging Facade for Java" (SLF4J) mit einem der unterstützten Logger wie z.B. Log4J oder JCL eingebunden und konfiguriert werden. Darüber hinaus wird ein passender JDBC Treiber für die verwendete Datenbank benötigt.

Dokumentation

Die Dokumentation von DbUnit wird nur in englischer Sprache und im HTML Format, ohne direkte Downloadmöglichkeit, angeboten. Es gibt einen hilfreichen Kurzeinstieg, der die grundlegenden Funktionen von DbUnit verständlich vermittelt. Außerdem gibt es eine Dokumentation im JavaDoc Format.

Wartung der Projektseite

Es gibt eine kontinuierliche Versionsgeschichte, allerdings liegen oft größere Zeitabstände zwischen Updates. Die aktuellste Version 2.4.8 wurde, laut den Nachrichten auf der Hauptseite, am 01.09.2010 veröffentlicht und wurde bis zum letzten Untersuchungszeitpunkt (27.04.2011), noch nicht in die Versionsgeschichte aufgenommen. Dies vermittelt den Eindruck, dass die Seite selten bearbeitet und gepflegt wird.

Nutzergruppen und Support

Die Mailingliste für Hilfeanfragen unter der Adresse "dbunit-user@lists.sourceforge.net", wird auf der Webseite des Herstellers als der Beste Weg um Hilfe zu bekommen bezeichnet. Weiterhin gibt es ein Wiki und Tracking-Systeme für Bugs und Änderungswünsche.

Intuitive Nutzbarkeit

Das Arbeiten mit DbUnit ist intuitiv, unter der Voraussetzung, dass der Benutzer über Grundlagenkenntnisse in relationalen Datenbanken, SQL und JDBC verfügt.

Automatisierung

In Verbindung mit JUnit, sind die Testabläufe fast identisch zu reinen JUnit Tests. Es werden auch Ant-Tasks und Maven unterstützt.

Einführendes Beispiel

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:

Standard DbUnit Testklassen erben von DBTestCase und basieren auf Junit 3.8.2 Testklassen. Die Tests selbst müssen somit nach dem Prinzip von Junit 3 Testklassen aufgebaut werden und die selben Regeln bezüglich Namen der Methoden etc. einhalten.
Es ist auch möglich DbUnit mit JUnit 4 zu verwenden: Anleitung


Testklasse: DbUnitTest.java


Testsuite und Runner: Testsuite.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.

Detaillierte Beschreibung

Beispiel: DBUnit mit JUnit 4

Literatur

-

Zurück zur Werkzeugübersicht
Zurück zur CSI-Hauptseite