Java Datenbankzugriff / Datenbankänderungen auf nicht vorhandene Datenbank testen

b1gsh0w

Cadet 4th Year
Registriert
Mai 2009
Beiträge
91
Hallo,

wir programmieren gerade ein Programm (Lagerverwaltung), das eine Datenbank nutzen soll.
Zum Testen der Methoden nutzen wir JUnit4.
Soweit ich weiß, kann man JUnit verwenden um Tests für Datenbankzugriffe zu schreiben, auch wenn auf die Datenbank nicht zugegriffen werden kann, weil sie zB gerade nicht verfügbar ist.

Hintergrund ist folgender: Ich bin jetzt soweit, dass ich den Datenbankzugriff - inserts, selects etc - testdriven implementieren möchte. Ich bin aber zu faul die Datenbank zu installieren und die Tabellen anzulegen.

Gibt es eine Möglichkeit mit JUnit "virtuelle" Datenbanken und Tabellen anzulegen und mit diesen zu testen? Wenn ja, hat jemand ein Beispiel oder Anleitungen?
Oder gibt es andere Frameworks mit denen ich das in Java machen kann?
 
Zuletzt bearbeitet:
Hast du soetwas wie DAOs, um auf die Datenbank zuzugreifen? Wenn die Zugriffe gekapselt sind, kannst du natürlich dahinter beliebige Mockobjekte (Fakeobjekte) einsetzen um die Zugriffe zu testen.

Wenn du jedoch wirklich direkt deine Queries auf der DB testen willst, dann brauchst du natürlich eine Datenbank dahinter.
 
HSQLDB -> In-Memory-SQL-Datenbank, die nach Ausführung der der JUnit-Tests direkt wieder alles vergisst.

Tests dann nach dem 3-Phasen-Prinzip stricken:
1. Leere DB mit Ausgangsdatenbestand befüllen (und deren Korrektheit über Assertions sicherstellen)
2. (zu testende) Logik ausführen
3. Über Assertions den Zustand der Daten nach ausführen der Logik prüfen.
 
Wenn ich dich nicht falsch verstehe, hat der TS damit was den Aufwand betrifft aber nicht viel gewonnen. Das gute daran ist, dass man jedes mal von einer identischen Datenbasis ausgehen kann (da Reset), aber einrichten muss er das trotzdem alles.
 
Um die Queries zu testen brauchst du ja ganz einfach auch zB Datensätze in den Tabellen der Datenbank. Für ein Insert brauchste zumindest schon die Attribute in der Tabelle und für Selects Datensätze.
Von daher ist das doch kein Mehraufwand ne kleine Datenbank irgendwo zu installieren!?

Für einen solchen Whitebox-Test sollten ja auch Datensätze verwendet werden, von denen man ausgeht, das Fehler auftreten können.
 
Ich benutz jetzt HSQLDB mit DB und Tabellen im Speicher. War einfach einzurichten, da muss nichts installiert werden. So will ich das haben. :D
 
Zurück
Oben