【问题标题】:Spring Boot: load all beans implementing an interface in test?Spring Boot:加载所有在测试中实现接口的bean?
【发布时间】:2020-12-19 20:22:51
【问题描述】:

我有一些接口Filter 和这个接口的一些实现。

@Test 中,我想加载所有实现Filter 的bean。

目前,我必须明确声明它们。例如:

@ContextConfiguration(classes = {FilterA.class, FilterB.class})

问题:引入另一个Filter 需要为每个使用filters 的测试类添加它。

有没有更好的办法?

【问题讨论】:

    标签: java spring spring-boot junit spring-test


    【解决方案1】:

    添加TestConfiguration 并在配置中声明所有实现该接口的bean。然后在您的测试中添加@Import(TestConfiguration.class)

    这样,如果有额外的实现,您只需将其添加到TestConfiguration

    您唯一需要注意的是使用@Qualifier 注释添加适当的接口实现。

    【讨论】:

    • 通过编写带有@Bean 注释的方法并返回new 对象?
    • 是的。确保使用 @TestConfiguration 注释你的类。这会将其标记为测试配置类而不是常规配置类,因此不会干扰您在应用程序中的 bean 设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2015-07-18
    • 2018-01-11
    • 2017-08-18
    • 2015-10-09
    • 1970-01-01
    相关资源
    最近更新 更多