Spring 引导:在测试中加载实现接口的所有 bean?

Spring Boot: load all beans implementing an interface in test?

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

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

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

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

问题:引入另一个 Filter 需要为每个使用 filters.

的测试 class 添加它

有没有更好的方法?

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

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

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