Java 使用Spring Boot进行测试时,仅从测试/资源加载数据
我有一个与Hibernate集成的Spring引导应用程序,用于数据库持久性 我有两个不同的data.sql文件:Java 使用Spring Boot进行测试时,仅从测试/资源加载数据,java,spring,hibernate,spring-boot,Java,Spring,Hibernate,Spring Boot,我有一个与Hibernate集成的Spring引导应用程序,用于数据库持久性 我有两个不同的data.sql文件: src/main/resources中的一个用于数据库初始化 一个位于src/test/resources中,用于测试目的 在测试时,它们都是在任何测试类之前加载的。但是,我只想加载test/resources一个,只留下main/resources一个用于应用程序初始化 我该怎么做 谢谢。您应该将spring.jpa.hibernate.ddl auto=create更改为u
- src/main/resources中的一个用于数据库初始化
- 一个位于src/test/resources中,用于测试目的
谢谢。您应该将
spring.jpa.hibernate.ddl auto=create
更改为update
(它只更新.sql文件中的更改),因为每次运行应用程序时使用create,“清理数据库”,所以每次都会处理这两个.sql
我希望这能解决您的问题。如果测试类正在启动spring启动应用程序,那么我认为您不能停止加载main/resources.sql文件 但是,如果您想在执行方法之前/之后(在测试类中)从test/resources加载.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")
})
您可以将以下配置(至少在spring boot 2中)添加到test application.yaml或application.properties文件中
spring:
datasource:
data: data.sql
设置此值后,spring boot将仅在运行测试时加载test data.sql。为测试维护一个单独的属性文件,因为它将帮助您将测试和开发分离开来
application.properties for dev
application-local.properties for local env
application-test.properties for test
根据您的需要拥有配置文件,并具有与配置文件相关的属性
另一种选择是根据您的需要覆盖属性。您可以为main和testing显示Spring引导注释吗?@EstanislaoPérezNartallo与hibernate相关的唯一注释是Spring.jpa.hibernate.ddl auto=createthem@AlbertoCasta尼诺你解决了吗?没有!也许我解释得不够好。我想要的是每次运行测试时都从头开始创建数据库,但只能从test/resources/data.sql,而不是从main/resources/data.sql。现在两个都被调用了@Rahul说,你不能停止加载main/resources.sql文件。因为是应用程序运行所必需的。