Semplice ed affidabile in-memory database per i test rapidi di integrazione Java con supporto per JPA

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

Domanda

I miei test di integrazione sarebbe correre molto più velocemente se ho usato in-memory-database invece di PostgreSQL. Io uso JPA (Hibernate) e ho bisogno di una memoria-database in-che sarebbe facile per passare ad usare JPA, facile da installare, e affidabile. Ha bisogno di sostenere JPA e Hibernate (o viceversa se si vuole), piuttosto ampiamente in quanto non ho alcun desiderio di adottare il mio codice di accesso ai dati per le prove.

Che database è la scelta migliore dato i requisiti di cui sopra?

È stato utile?

Soluzione

test di integrazione , io uso H2 (da l'autore originale di HSQLDB) che preferisco più di HSQLDB. E ' più veloce (e voglio che i miei test di essere il più veloce possibile), si è alcune funzioni molto comode come il href="http://h2database.com/html/features.html#compatibility" rel="noreferrer"> compatibilità modalità , il team di sviluppo è molto reattivo (mentre HSQLDB rimasta in sospeso per anni fino a poco tempo fa).

Altri suggerimenti

Ho usato HSQLDB in memoria per l'integrazione testare JPA / Hibernate persistenza in Java. Inizia abbastanza rapidamente, non richiede alcuna configurazione speciale.

L'unico problema che ho visto finora con l'utilizzo di HSQLDB con Hibernate è stato quello di fare con la dimensione del lotto bisogno di essere impostato a 0, ma che potrebbe anche essere stata relative a una vecchia versione. Avrò uno scavo e vedere se riesco a trovare i dettagli di quel problema.

Derby supporta una modalità in-memory in questi giorni, non è più marcato sperimentale.

Io uso Derby. Per prima cosa si tratta di 3 meno linee di codice per ogni unit test in quanto non v'è alcuna necessità di un arresto dopo il test. Tuttavia, è necessario utilizzare un'implementazione JPA che può cadere e creare le tabelle, come EclipseLink.

Derby può anche inizializzare un nuovo database in memoria da un file in modo da poter avere una banca dati di riferimento e tornare ad esso in qualsiasi momento.

Per Unit Testing, però, preferisco creare i miei oggetti nella logica @Before di mio test di unità Trovo più facile soprattutto con JPA in quanto mi permette la flessibilità necessaria per fare refactoring e non devono preoccuparsi circa la struttura del database sottostante, altri strumenti come DBUnit contare su praticamente una struttura statica e refactoring implica la modifica delle XMLs DBUnit manualmente piuttosto che basarsi su capacità refactoring di Eclipse.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top