我加入,有很多与创建用于集成测试数据库的SQL语句的文件的项目。
我不知道我该如何使用这些文件(使用Java和Maven)创建单元测试的数据库。
我可以创建一个HSQL内存数据库的每个单元测试,甚至可以使用Spring JDBC中的嵌入数据库功能,但有这么多的SQL语句在测试设置来执行,这是不可扩展的。
所以我想创建一个临时数据库(即加载SQL语句)在Maven的测试阶段的开始,有单元测试访问此临时数据库和执行各种操作,然后在行家的最后删除临时数据库测试阶段。
我已经看了SQL-Maven的插件,它可以让我做了测试阶段执行,但我不知道如何配置临时数据库,这将是在所有的单元测试可用。 有没有服务器连接到,并在内存数据库不会在多个单元测试(我认为)工作。
一种选择是使用一个唯一的临时文件,比如指定JDBC驱动程序URL为JDBC:HSQLDB:文件:/路径/到/临时/文件,但我不知道如何生成的行家一个唯一的临时文件。
如何做到这一点的任何建议,或者如果有一个更好的办法来取?
更新:我决定使用在目标/ db目录中创建一个基于文件的数据库。 我使用maven清洁插件测试运行之前删除目标/ db目录和行家SQL插件创建通过脚本数据库。
对于这种情况,我创建了德比- Maven的插件 。 这是从中央Maven的,所以你不需要添加任何额外的仓库或任何东西。
你可以使用这样的:
<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>
欲了解更多信息,你也可以检查用法 。