Простая и надежная в памяти база данных для быстрых тестов интеграции Java с поддержкой JPA - PullRequest
15 голосов
/ 10 августа 2010

Мои интеграционные тесты выполнялись бы намного быстрее, если бы я использовал базу данных в памяти вместо PostgreSQL.Я использую JPA (Hibernate) и мне нужна база данных в памяти, которую было бы легко переключить на использование JPA, легко настроить и надежно.Он должен поддерживать JPA и Hibernate (или наоборот, если хотите) довольно широко, поскольку у меня нет желания использовать мой код доступа к данным для тестов.

Какая база данных является лучшим выбором с учетом приведенных выше требований?

Ответы [ 3 ]

19 голосов
/ 10 августа 2010

Для интеграционного тестирования , теперь я использую H2 (от первоначального автора HSQLDB), который я предпочитаю над HSQLDB.Это быстрее (и я хочу, чтобы мои тесты были максимально быстрыми), у него есть некоторые приятные функции, такие как режим совместимость , команда разработчиков очень отзывчива (в то время как HSQLDB оставался в бездействии)в течение многих лет, пока совсем недавно).

4 голосов
/ 10 августа 2010

Я использовал HSQLDB в памяти для интеграционного тестирования устойчивости JPA / Hibernate в Java.Запускается довольно быстро, не требует специальной настройки.

Единственная проблема, с которой я сталкивался до сих пор при использовании HSQLDB с Hibernate, заключалась в том, что размер пакета должен быть равен 0, но это можетбыли связаны со старой версией.Я пойду и посмотрю, смогу ли я найти детали этой проблемы.

В наши дни Дерби поддерживает режим в памяти , он больше не помечен как экспериментальный.

2 голосов
/ 05 сентября 2011

Я использую Дерби. Во-первых, это примерно на 3 строки кода на единицу теста, так как нет необходимости в завершении работы после теста. Однако вам нужно использовать реализацию JPA, которая может отбрасывать и создавать таблицы, такие как EclipseLink.

Derby также может инициализировать новую базу данных в памяти из файла, чтобы вы могли иметь справочную базу данных и вернуться к ней в любое время.

Однако для модульного тестирования я предпочитаю создавать свои объекты в логике моего модульного теста @Before, особенно с JPA, так как он позволяет мне гибко выполнять рефакторинг и не беспокоиться о базовой структуре базы данных, других инструментах такие как DBunit полагаются практически на статическую структуру, а рефакторинг подразумевает изменение XML-файлов DBunit вручную, а не использование возможностей рефакторинга Eclipse.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...