gpt4 book ai didi

java - @SpringBootTest 的一次性配置

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:51 28 4
gpt4 key购买 nike

我如何引导我的 Spring Boot 2 集成测试,以便在所有这些测试中我可以拥有一组配置,这些配置使用一些可用于所有集成测试的测试数据预先植入测试数据库?

最佳答案

假设您正在使用 h2 测试数据库。

我的src/test/resources/application.properties 文件有:

spring.jpa.hibernate.ddl-auto=create-drop

您需要一个具有以下结构的配置文件。 (这是位于文件夹 src/test/java 中的配置示例):

@Profile("test")
@Configuration
public class H2Config {

@Autowired
private DataSource datasource;

@PostConstruct
public void loadSQL() throws Exception {
ScriptUtils.executeSqlScript(datasource.getConnection(), new ClassPathResource("/sql/load_database.sql"));
}
}

文件“load_database.sql”:(完整路径为/src/test/resources/sql/load_database.sql)

CREATE OR REPLACE TABLE OPER_DISPN(
ID NUMBER NOT NULL,
DT_VCTO_OPER DATE NOT NULL
);


INSERT INTO OPER_DISPN(ID,DT_VCTO_OPER) VALUES (1,TO_DATE('2018/09/21', 'yyyy/mm/dd'));

如果您正在使用映射实体(使用@Entity)(使用 create-drop),您将不需要“CREATE TABLE”部分。

现在,您所有的集成测试都已插入脚本数据

编辑:(我的测试结构) 我在 github 上创建了我的示例应用程序。请查看测试结构并运行测试:

TNotMappedRepository.testLoadDataFind()
PersonRepository.testLoadDataFind()

Github:https://github.com/thiagochagas/insert-data-tests

关于java - @SpringBootTest 的一次性配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53365734/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com