【发布时间】:2012-01-06 14:54:45
【问题描述】:
我有以下情况。 我有一个 Hibernate-Spring 项目,它适用于生产环境的 mySQL,并使用 H2 内存数据库进行集成测试,它是动态创建的。 目前,当我使用 maven 运行整数测试时,会出现错误,因为数据库是在测试之间维护的。这是不可接受的,因为我计划我的测试在一个新的数据库上运行。 如何在测试之间强制删除数据库中的所有数据? 有没有办法告诉 maven 删除模式并为每个测试文件再次生成它?
【问题讨论】:
我有以下情况。 我有一个 Hibernate-Spring 项目,它适用于生产环境的 mySQL,并使用 H2 内存数据库进行集成测试,它是动态创建的。 目前,当我使用 maven 运行整数测试时,会出现错误,因为数据库是在测试之间维护的。这是不可接受的,因为我计划我的测试在一个新的数据库上运行。 如何在测试之间强制删除数据库中的所有数据? 有没有办法告诉 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
【讨论】:
【讨论】: