Каков наилучший способ запуска HSQLDB для модульного тестирования при работе с spring, maven и hibernate? - PullRequest
17 голосов
/ 16 июня 2010

В моем проекте я могу успешно протестировать код базы данных. Я использую Spring, Hibernate, HSQLDB, JUnit и Maven.

Подвох в том, что в настоящее время я должен запустить HSQLDB вручную перед запуском тестов. Как лучше всего автоматизировать запуск HSQLDB с использованием используемых технологий?

Ответы [ 5 ]

15 голосов
/ 16 июня 2010

Я предполагаю, что с hsql вы ссылаетесь на HSQLDB .

Настройте URL своей базы данных для драйверов JDBC (для спящего режима и т. Д.) На версию HSQLDB на основе встроенной памяти:1006 *

jdbc:hsqldb:mem:myunittests

Затем автоматически запускается незавершенная версия HSQLDB, которая сохраняет данные в памяти.Нет необходимости запускать внешние серверы.

4 голосов
/ 09 июля 2014

Я сам использую базу данных hsql в памяти для тестирования своего DAO. В результате мне не нужно подключаться к какому-либо внешнему серверу базы данных или иметь какое-либо сетевое подключение.
Используйте следующие настройки:

jdbc.driverClassName=org.hsqldb.jdbc.JDBCDriver

jdbc.url=jdbc:hsqldb:mem:DatabaseName

Также включите

<property name="hibernateProperties">
   <props>
     <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
     <prop key="default_schema">test</prop>
     <prop key="hibernate.show_sql">true</prop>
     <prop key="hibernate.format_sql">false</prop>
     <prop key="hibernate.hbm2ddl.auto">create</prop>
   </props>
</property>

Это позволит вам использовать базу данных в памяти и автоматически создавать таблицы базы данных из объектов гибернации перед выполнением тестов.

Надеюсь, это поможет вам.

Примечание:

Свойство default_schema используется, когда ваш администратор баз данных создает несколько схем в одной базе данных. Я видел это с postgres, где каждый использует один URL базы данных, но под этим существуют отдельные схемы для каждого приложения.

Используя свойство схемы по умолчанию, оно позволяет вам исключить имена схем из ваших сущностей. Это особенно полезно, если вы запускаете тесты для HSqlDB, который не поддерживает схемы, и вы развертываете для БД, использующей схемы. Наличие нулевого значения означает, что оно по умолчанию возвращается к схеме по умолчанию БД.

1 голос
/ 16 июня 2010

Вы также можете запустить задачу Ant <startdb>:

https://forums.hibernate.org/viewtopic.php?f=6&t=984383&start=0

0 голосов
/ 16 июня 2010

Используйте его в процессе или в памяти , и он будет запускаться из JDBC при установлении соединения.

0 голосов
/ 16 июня 2010

С помощью JUnit вы можете создать метод, который будет выполняться перед вашими тестами, используя следующую аннотацию: @ Before

Ссылка на документы JUnit об этом находится здесь: JUnit FAQ - Test Fixtures

...