Каков наилучший способ запуска 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.
Ответ 3
Вы также можете запустить задачу Ant <startdb>
:
https://forums.hibernate.org/viewtopic.php?f=6&t=984383&start=0
Ответ 4
Используйте in-process или в памяти, и он начнет работу с JDBC при установлении соединения.
Ответ 5
С помощью JUnit вы можете создать метод, который выполняется перед вашими испытаниями, используя следующую аннотацию: @Before
Ссылка на документы JUnit об этом находится здесь: JUnit FAQ - Test Fixtures