这是我在 stackoverflow.com 上的第一个问题。
最近我一直在寻找一种方法来改变 Spring Boot (2.x) 如何命名它的 bean,通过 @Component (etc) 注释创建。
我找到了SpringApplicationBuilder类,幸好它允许注入自定义 bean 名称生成器:
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class)
.beanNameGenerator(customBeanNameGenerator)
.run(args);
}
}
但问题是,尽管这个解决方案适用于生产环境,但这在 JUnit 4.0 单元测试中不起作用,其中 JUnit Runner SpringRunner为测试目的重新创建 Spring Context - 在这种情况下,SpringApplicationBuilder 无论如何都不会使用,因此由于自动装配多 bean 候选问题,我们的应用程序启动失败。
@RunWith(SpringRunner.class)
@SpringBootTest(classes= {Application.class} )
public class SomeControllerTest {
...
}
有什么优雅的方法可以让单元测试也使用 SpringApplicationBuilder 吗?
问候。