微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决是否有可以用来替换测试中的 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 举报,一经查实,本站将立刻删除。