我正在为不使用hibernate的spring mvc 3.1应用程序编写单元测试。
我想通过我创建的sql脚本在hsql DB中创建表,以在oracle DB中生成表。
我四处寻找方法,但找不到任何有用的东西。
理想情况下,我想在安装过程中创建表,执行测试,然后删除表。
有什么想法吗?
答案 0 :(得分:3)
您是否查看了Spring文档中的Embedded Database Support?
像这样创建数据库:
<jdbc:embedded-database id="dataSource">
<jdbc:script location="classpath:schema.sql"/>
<jdbc:script location="classpath:test-data.sql"/>
</jdbc:embedded-database>
(您可以选择指定类型,但默认为HSQL)。将适当的HSQL依赖项添加到类路径中。
创建应用程序上下文时将创建嵌入式数据库。通过进行测试@Transactional,每次测试执行后都会有回滚,导致表在下一次测试开始之前恢复到原来的已知状态。因此,无需每次测试删除和重新创建表。
答案 1 :(得分:3)
谢谢@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>
答案 2 :(得分:1)
我认为你需要看一下DBUnit
答案 3 :(得分:0)
要执行SQL脚本,请查看SimpleJdbcTestUtils。