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

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

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

Ответы

Ответ 1

Я предполагаю, что с hsql вы имеете в виду HSQLDB.

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

jdbc:hsqldb:mem:myunittests

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

Ответ 2

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

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, который не поддерживает схемы и развертывается с БД, использующим схемы. Наличие нулевого значения означает, что оно по умолчанию возвращается к схеме по умолчанию DB.

Ответ 4

Используйте in-process или в памяти, и он начнет работу с JDBC при установлении соединения.

Ответ 5

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

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