在maven中的整合测试之间删除内存DB中的H2

std*_*all 5 spring h2 maven

我有以下场景.我有一个Hibernate-Spring项目,它可以在mySQL上进行生产,并使用H2内存数据库进行集成测试,这是在运行中创建的.目前,当我使用maven运行整合测试时,我会收到错误,因为数据库是在测试之间维护的.这是不可接受的,因为我计划在新数据库上运行我的测试.如何在测试之间强制删除DB中的所有数据?有没有办法告诉maven删除架构并为每个测试文件再次生成它?

Tom*_*icz 1

您如何运行集成测试?Spring 内置了对事务测试的支持。您也可以在每次测试后手动删除并重新创建数据库,这非常简单:

SCRIPT NOPASSWORDS DROP TO 'file.sql'
Run Code Online (Sandbox Code Playgroud)

然后用以下命令恢复它:

RUNSCRIPT FROM 'file.sql'
Run Code Online (Sandbox Code Playgroud)

我想几乎每个测试框架JUnit / TestNG / Fitense / Selenium / ... 都允许在所有测试之前和每次测试之后运行一些自定义代码。

这是我的博客文章,解释了它的工作原理以及ScalaTest的示例设置。