是否有可以用来替换测试中的 spring bean 的注释?

问题描述

我的上下文严重依赖于 DatabaseSettings bean。但是,对于测试,我通常想用 TestDatabaseSettings bean 替换那个 bean。

目前我通过为测试设置额外的上下文配置来实现这一点,这几乎是我的正常上下文配置(所有 bean 都自动生成,因为它们都用 @Component 注释),只是它覆盖了DatabaseSettings bean 和 TestDatabaseSettings 像这样:

@Configuration
@ComponentScan(basePackages = "io.company.project.module")
public class TestContextConfig {
    @Bean
    @Primary
    public DatabaseSettings knightSettings() {
        return new TestDatabaseSettings();
    }
}

供参考:这就是 TestDatabaseSettings 的样子(它所做的只是覆盖实际 DatabaseSettings 中的逻辑,该逻辑将从具有硬编码测试值的设置文件中加载数据库名称):

public class TestDatabaseSettings extends DatabaseSettings {
    
    private static final String TEST_DATABASE_NAME = "test_database";

    @Override
    protected String readDatabaseNameFromProperties() {
        return TEST_DATABASE_NAME;
    }
}

所以,我想知道是否有办法使用注释来实现这一点。基本上,我只想告诉系统:“使用您的正常上下文,但是将 DatabaseSettings bean 替换为所有出现的 TestDatabaseSettings。在我的幻想中,该注释可能看起来像这样:

@ContextReplaceBean(TestDatabaseSettings.class)
DatabaseSettings databaseSettings;

有这样的注释吗?或者我当前的解决方案在每次执行此操作时使用不同的上下文配置是否已经是最好的方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)