Генерация таблиц базы данных до дао модульного теста - PullRequest
3 голосов
/ 05 февраля 2012

Я пишу юнит-тесты для приложения Spring mvc 3.1, которое не использует Hibernate.

Я хочу создать таблицы в базе данных hsql с помощью сценариев sql, которые я создал для создания таблиц в базе данных Oracle.

Я искал способы сделать это, но не смогнайди что-нибудь полезное.

В идеале я хотел бы создать таблицы во время установки, выполнить тесты, а затем удалить таблицы.

Есть идеи?

Ответы [ 4 ]

3 голосов
/ 06 февраля 2012

Спасибо @matsev за это ~! Это помогло. В итоге я использовал немного другую конфигурацию, поскольку хотел использовать HSQL в качестве моей тестовой базы данных для производственной БД Oracle.

Я закончил тем, что сделал:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
    <property name="url" value="jdbc:hsqldb:mem:test;sql.syntax_ora=true"/>
    <property name="username" value="sa"/>
    <property name="password" value=""/>
</bean>
<jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS">
    <jdbc:script location="file:Artifacts/sql/install.sql"/>
    <jdbc:script location="file:Artifacts/sql/patchset/1.0.0.02.create_survey_tables.sql"/>
    <jdbc:script location="file:Artifacts/sql/patchset/1.00.01.update.sql"/>
    <jdbc:script location="file:Artifacts/sql/patchset/1.00.03.insert_surveyQA2.sql"/>
    <jdbc:script location="file:Artifacts/sql/patchset/1.00.05.insert_surveyQA4.sql"/>
</jdbc:initialize-database>
3 голосов
/ 05 февраля 2012

Вы смотрели на Поддержка встроенных баз данных в документации Spring?

Создайте свою базу данных так:

<jdbc:embedded-database id="dataSource">
    <jdbc:script location="classpath:schema.sql"/>
    <jdbc:script location="classpath:test-data.sql"/>
</jdbc:embedded-database>

(При желании вы можете указать тип, но по умолчанию это HSQL). Добавьте соответствующие зависимости HSQL к вашему classpath.

Встроенная база данных будет создана при создании контекста приложения. После выполнения теста @ Transactional после выполнения каждого теста будет выполняться откат, в результате чего таблицы будут возвращаться в исходное известное состояние до начала следующего теста. Следовательно, нет необходимости удалять и повторно создавать таблицы для каждого теста.

1 голос
/ 06 февраля 2012

Я думаю, вам нужно взглянуть на DBUnit

0 голосов
/ 05 февраля 2012

Для выполнения сценариев SQL посмотрите SimpleJdbcTestUtils.

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