使用Spring Boot测试时仅从测试/资源加载数据

时间:2018-07-16 09:04:22

标签: java spring hibernate spring-boot

我有一个与Hibernate集成的Spring Boot应用程序,用于数据库持久性。

我有两个不同的data.sql文件:

  • src / main / resources中的一个用于数据库初始化
  • 用于测试目的的src / test / resources中的一个

在测试时,它们都在任何测试类之前加载。但是,我只想加载一个test / resources,只保留main / resources,仅用于应用程序初始化。

我该怎么做?

谢谢。

4 个答案:

答案 0 :(得分:0)

您应将spring.jpa.hibernate.ddl-auto=create更改为update(它只会更新.sql文件中的更改),因为每次运行应用程序时都要用create来“清理数据库”,这就是为什么每次都处理这两个.sql。

我希望这可以解决您的问题。

答案 1 :(得分:0)

如果测试类正在启动Spring Boot应用程序,那么我不认为您可以停止加载main / resources .sql文件。

但是,如果要在测试方法执行之前/之后(在测试类中)从测试/资源中加载.sql文件,则可以使用@SqlGroup批注。

@SqlGroup({
    @Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = "classpath:beforeTestRun.sql"),
    @Sql(executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, scripts = "classpath:afterTestRun.sql")

          })

答案 2 :(得分:0)

您可以将以下配置(至少在春季启动2中)添加到测试application.yaml或application.properties文件中。

spring:
  datasource:
    data: data.sql

一旦设置了此值,spring boot只会在运行测试时加载测试data.sql。

答案 3 :(得分:0)

维护一个单独的属性文件以进行测试,因为它将帮助您将测试和开发之间的内容分开。

if (data.COUNTRY === undefined || data.COUNTRY === null || data.COUNTRY.length === 0) {}

根据需要拥有配置文件,并具有与配置文件有关的属性。

另一种选择是根据需要覆盖属性。