我加入了一个项目,该项目包含大量带有SQL语句的文件,用于创建用于集成测试的数据库.
我想知道如何使用这些文件来创建用于单元测试的数据库(使用java和maven).
我可以为每个单元测试创建一个HSQL内存数据库,甚至可以使用spring jdbc嵌入式数据库功能,但是在测试设置中要执行的SQL语句太多,这是不可扩展的.
所以我想在maven测试阶段开始时创建一个临时数据库(加载SQL语句),让单元测试访问这个临时数据库并执行各种操作,然后在maven结束时删除临时数据库测试阶段.
我看过sql-maven-plugin,它允许我进行测试阶段执行,但我不确定如何配置一个可用于所有单元测试的临时数据库.没有服务器可以连接,并且内存数据库不能在多个单元测试中工作(我假设).
一个选项可能是使用唯一的临时文件,例如将JDBC驱动程序URL指定为jdbc:hsqldb:file:/ path/to/temporary/file,但我不确定如何在maven中生成唯一的临时文件.
有关如何做到这一点的任何建议,或者是否有更好的方法?
更新:我决定使用在target/db目录中创建的基于文件的数据库.我使用maven clean插件在运行测试之前删除target/db目录,并使用maven sql插件从脚本创建数据库.
为什么不创建一个磁盘上的 H2 数据库,并让每个测试都访问它?只要测试不并行运行或相互交互,您就不需要服务器。
更重要的是:只需在@Before中创建内存数据库并在@After中删除它们。你确定这太慢了吗?
在集成前测试中,您可以启动 H2(或 derby)服务器,并在集成后测试中将其关闭。
您可以编写一个使用会话状态来跟踪嵌入式数据库服务的 Maven 插件,但这与 (3) 非常相似。
| 归档时间: |
|
| 查看次数: |
3518 次 |
| 最近记录: |