我有以下场景。我有一个Hibernate-Spring项目,它可以在mySQL上进行生产,并使用H2内存数据库进行集成测试,这是在运行中创建的。目前,当我使用maven运行整合测试时,我会收到错误,因为数据库是在测试之间维护的。这是不可接受的,因为我计划在新数据库上运行我的测试。如何在测试之间强制删除DB中的所有数据?有没有办法告诉maven删除架构并为每个测试文件再次生成它?
我会看看Spring's support for embedded databases。你可以让Spring为你做数据库创建和设置,并让你作为一个简单的DataSource
访问它。您真正需要做的就是提供sql脚本来创建/填充数据库,每次运行时,都会重新创建数据库。
<jdbc:embedded-database id="dataSource" type="h2">
<jdbc:script location="classpath:schema.sql"/>
<jdbc:script location="classpath:test-data.sql"/>
</jdbc:embedded-database>
不要忘记jdbc
命名空间:
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd