在Spring boot的测试配置文件中加载正确的bean

问题描述 投票:0回答:1

我的 application.yaml 具有以下条目:

spring:
  profiles:
    active: test
    include: h2, test
key:
 enabled: on

我有以下三个 bean 定义,并且想在我的测试中加载 TestConfig bean。但在测试中需要NoConfig Bean:

    @ConditionalOnProperty(name = "key.enabled", matchIfMissing = true)
    @Profile("test")
    public class TestConfig {}

    @ConditionalOnMissingBean(Config.class)
    public class NoConfig {}

   @ConditionalOnProperty(name = "key.enabled", matchIfMissing = true)
   @Profile("!test")
   public class Config{}

我还检查了测试中的活动配置文件,它确实是测试配置文件。

@Value("${spring.profiles.active:Unknown}")
private String activeProfile;
java spring spring-boot javabeans spring-bean
1个回答
0
投票
当没有 Bean

NoConfig

 时,您所拥有的 
Bean
Config
总是会被创建。您可以尝试使用
@TestConfiguration
来定义特定测试所需的bean,或者您可以编写一个
BeanFactoryPostProcessor
来从初始化中排除不必要的bean

© www.soinside.com 2019 - 2024. All rights reserved.