gpt4 book ai didi

spring-boot - 如何将@DataJpaTest 与多个数据源一起使用

转载 作者:行者123 更新时间:2023-12-04 02:43:17 24 4
gpt4 key购买 nike

我尝试使用注释 @DataJpaTest 编写集成测试。
我有两个数据源:主要和次要(类配置)
结果我有一个错误:

expected single matching bean but found 2: primaryDataSource,secondary

然后我尝试添加注释
@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.AUTO_CONFIGURED)

并且使用 AUTO_CONFIGURED 只有由属性配置的数据源将被替换,但我看到的是嵌入的 h2 Dialect : HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
如何使用 @DataJpaTest有多个数据源?
public class DataSourcesConfig {


@Bean
@Primary
@ConfigurationProperties(prefix="spring.datasource")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}

@Bean(name = "secondary")
@ConfigurationProperties(prefix="datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}

}

最佳答案

找到可能的解决方案 here .

基本上,您可以适本地手动配置 H2 数据库,而不是让 Spring 自动进行配置。

在“src/test/resources”中创建一个application.properties文件,内容如下

# Let Spring autodetect the different SQL Dialects of each datasource
spring.jpa.database=default
# Generate the DB schema in the In-Memory H2 databases based on the JPA Entities
spring.jpa.generate-ddl=true

# H2 In-Memory Database "foo" (used in tests instead of a real PostgreSQL DB)
spring.datasource.url=jdbc:h2:mem:foo;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver

# H2 In-Memory Database "bar" (used in tests instead of a real PostgreSQL DB)
bar.datasource.url=jdbc:h2:mem:bar;DB_CLOSE_ON_EXIT=FALSE
bar.datasource.username=sa
bar.datasource.password=
bar.datasource.driver-class-name=org.h2.Driver

关于spring-boot - 如何将@DataJpaTest 与多个数据源一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47471969/

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