我加入了一个项目,该项目有很多带有 SQL 语句的文件,用于创建用于集成测试的数据库。
我想知道如何使用这些文件来创建用于单元测试的数据库
(使用java和maven)。
我可以为每个单元测试创建一个 HSQL 内存数据库,甚至可以使用 spring jdbc 嵌入式数据库功能,但是在测试设置中需要执行太多 SQL 语句,因此这是不可扩展的。
所以我想在maven测试阶段开始时创建一个临时数据库(加载SQL语句),让单元测试访问这个临时数据库并执行各种操作,然后在maven结束时删除临时数据库测试阶段。
我查看了 sql-maven-plugin,它允许我执行测试阶段执行,但我不确定如何配置可在所有单元测试中使用的临时数据库。没有可连接的服务器,并且内存数据库无法跨多个单元测试工作(我假设)。
一种选择是使用唯一的临时文件,例如将 JDBC 驱动程序 URL 指定为 jdbc:hsqldb:file:/path/to/temporary/file,但我不确定如何在 maven 中生成唯一的临时文件。
关于如何做到这一点有什么建议,或者是否有更好的方法可以采取?
Update:我决定使用在 target/db 目录中创建的基于文件的数据库。我使用 maven clean 插件在运行测试之前删除 target/db 目录,并使用 maven sql 插件从脚本创建数据库。
对于这种情况,我创建了德比行家插件 https://github.com/carlspring/derby-maven-plugin。它可从 Maven Central 获取,因此您无需添加任何额外的存储库或任何内容。
你可以这样使用它:
<project ...>
<build>
<plugins>
<plugin>
<groupId>org.carlspring.maven</groupId>
<artifactId>derby-maven-plugin</artifactId>
<version>1.8</version>
<configuration>
<basedir>${project.build.directory}/derby</basedir>
<port>1527</port>
</configuration>
<executions>
<execution>
<id>start-derby</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>stop-derby</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
欲了解更多信息,您还可以查看USAGE https://github.com/carlspring/derby-maven-plugin/blob/master/USAGE.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)