Simple et fiable dans la base de données de la mémoire pour les tests d'intégration java rapide avec prise en charge JPA

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

Question

Mes tests d'intégration seraient beaucoup plus vite si je en mémoire base de données au lieu de PostgreSQL. J'utilise JPA (Hibernate) et je besoin d'une base de données en mémoire qui serait facile de passer à l'aide de JPA, facile à installer et fiable. Il doit soutenir JPA et Hibernate (ou vice-versa si vous voulez) assez longuement car je ne veux pas adopter mon code d'accès aux données pour les tests.

Quelle est la meilleure base de données les exigences ci-dessus étant donné le choix?

Était-ce utile?

La solution

les tests d'intégration , j'utilise maintenant H2 (de l'auteur original de HSQLDB) que je préfère plus HSQLDB. Il est plus rapide (et je veux que mes essais soient aussi vite que possible), il a quelques fonctionnalités comme le mode de compatibilité , l'équipe de développement est très réactif (alors que HSQLDB est resté en sommeil pendant des années, jusqu'à très récemment).

Autres conseils

Je me sers HSQLDB en mémoire pour l'intégration test JPA / Hibernate persistance en Java. Commence assez rapidement, ne nécessite pas de configuration particulière.

La seule question que je l'ai vu à ce jour avec l'aide HSQLDB avec Hibernate était de voir avec la taille des lots devant être mis à 0, mais qui pourrait bien être liée à une ancienne version. Je vais avoir une fouille et voir si je peux trouver des détails de ce problème.

Derby prend en charge un mode en mémoire ces jours-ci, il n'est plus marqué expérimentale.

J'utilise Derby. D'une part, il est d'environ 3 moins de lignes de code par test unitaire car il n'y a pas besoin d'un arrêt après le test. Cependant, vous devez utiliser une implémentation JPA qui peut déposer et créer des tableaux tels que EclipseLink.

Derby peut également initialiser à partir d'un fichier d'une nouvelle base de données en mémoire afin que vous puissiez avoir une base de données de référence et y revenir à tout moment.

Pour les tests unitaires bien, je préfère créer mes objets dans la logique @Before de mon test unitaire je trouve plus facile surtout avec JPA car elle me permet la flexibilité de faire refactoring et ne pas avoir à se soucier de la structure de base de données sous-jacente, d'autres outils tels que DbUnit comptent sur pratiquement une structure statique et refactoring implique la modification des fichiers XML DbUnit manuellement plutôt que de compter sur les capacités de refactorisation Eclipse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top