我有一个与Hibernate集成的Spring Boot应用程序,用于数据库持久性。
我有两个不同的data.sql文件:
在测试时,它们都在任何测试类之前加载。但是,我只想加载一个test / resources,只保留main / resources,仅用于应用程序初始化。
我该怎么做?
谢谢。
答案 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) {}
根据需要拥有配置文件,并具有与配置文件有关的属性。
另一种选择是根据需要覆盖属性。