小编Kin*_*das的帖子

Spring Boot:@TestConfiguration在集成测试期间不覆盖Bean

Bean在用@Configuration修饰的类中定义了:

@Configuration
public class MyBeanConfig {

    @Bean
    public String configPath() {
        return "../production/environment/path";
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个用@TestConfiguration修饰的类应该覆盖它Bean:

@TestConfiguration
public class MyTestConfiguration {

    @Bean
    @Primary
    public String configPath() {
        return "/test/environment/path";
    }
}
Run Code Online (Sandbox Code Playgroud)

configPathbean用于设置外部文件的路径,该文件包含必须在启动期间读取的注册码.它用在@Component类中:

@Component
public class MyParsingComponent {

    private String CONFIG_PATH;

    @Autowired
    public void setCONFIG_PATH(String configPath) {
        this.CONFIG_PATH = configPath;
    }
}
Run Code Online (Sandbox Code Playgroud)

在尝试调试时,我在每个方法中设置了一个断点以及测试配置类的构造函数.在@TestConfiguration类的构造函数断点命中,所以我知道我的测试配置类实例化,但是configPath()该类的方法不会被击中.相反,configPath()正常的@Configuration类的方法被命中,而@Autowired Stringin MyParsingComponent总是../production/environment/path而不是预期的/test/environment/path.

不知道为什么会这样.任何想法将不胜感激.

java spring-test spring-boot

22
推荐指数
6
解决办法
2万
查看次数

标签 统计

java ×1

spring-boot ×1

spring-test ×1