Einfache und zuverlässige In-Memory-Datenbank für schnelle Java-Integrationstests mit Unterstützung für JPA

StackOverflow https://stackoverflow.com/questions/3444265

Frage

Meine Integrationstests würden viel schneller laufen, wenn ich verwenden, In-Memory-Datenbank anstelle von PostgreSQL. Ich benutze JPA (Hibernate) und ich brauche eine speicher-Datenbank, die mit JPA, einfach zu installieren einfach zu Schalter sein würde und zuverlässig. Es braucht JPA und Hibernate (oder umgekehrt, wenn man so will) unterstützen eher extensiv, da ich keine Lust habe meinen Datenzugriffscode für die Tests zu übernehmen.

Was Datenbank ist die beste Wahl gegebenen Anforderungen oben?

War es hilfreich?

Lösung

Integrationstests , habe ich jetzt benutzen H2 (aus dem ursprünglichen Autor von HSQLDB) dass ich es vorziehen, über HSQLDB. Es ist schneller (und ich möchte, dass meine Tests so schnell wie möglich sein), es hat einige nette Features wie die Kompatibilität Modus ist das Entwicklerteam sehr reaktionsschnell (während HSQLDB ruhend geblieben seit Jahren bis vor kurzem).

Andere Tipps

Ich habe mit HSQLDB in-Memory für Integrationstests JPA / Hibernate Persistenz in Java. Startet ziemlich schnell, keine spezielle Einrichtung erforderlich ist.

Die einzige Problem, das ich bisher gesehen habe mit der Verwendung von HSQLDB mit Hibernate war mit Losgröße zu tun, um auf 0 zu setzen, aber das ist vielleicht nur auf eine alte Version verwendet worden ist. Ich werde einen graben und sehen, ob ich Details dieses Problems finden kann.

Derby unterstützt eine In-Memory-Modus diesen Tagen ist es nicht mehr markiert experimentell.

Ich benutze Derby. Zum einen ist es etwa 3 weniger Codezeilen pro Unit-Test, da es keine Notwendigkeit für eine Abschaltung nach dem Test. Allerdings müssen Sie eine JPA-Implementierung verwenden, die fallen kann und Tabellen erstellen wie Eclipse.

Derby kann auch eine neue In-Memory-Datenbank aus einer Datei initialisieren, so dass Sie eine Referenzdatenbank und zurück wechseln, um es jederzeit machen können.

Für Einheit obwohl die Prüfung, ziehe ich meine Objekte in meinem Unit-Test @Before Logik zu schaffen, finde ich es einfacher, vor allem mit JPA, wie es mir die Flexibilität ermöglicht Refactoring zu tun und nicht zu kümmern, über die zugrunde liegende Datenbankstruktur, andere Werkzeuge wie DBUnit verlassen sich auf praktisch einer statischen Struktur und Refactoring bedeutet, als sich auf Eclipse Refactoring-Funktionen manuell eher der DBUnit XMLs zu verändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top