【发布时间】:2023-04-04 07:20:01
【问题描述】:
我想重用 Spring 生产上下文配置,但是用另一个替换一些 bean。如果我想用模拟覆盖它们,我会使用@MockBean,它完全符合我的需要(覆盖 bean),但不允许我自己配置新的 bean。
我知道还有另一种使用 @ContextConfiguration 的方法,但它对我来说似乎太冗长了。
谢谢。
【问题讨论】:
-
@MockBean 用于测试,而不是用于应用程序代码。
-
是的,我问的是集成测试(正在加载弹簧上下文的单元测试)
-
除了定义一个具有相同类型的新bean并将其标记为
@Primary之外,没有简单的方法来覆盖bean。spring.main.allow-bean-definition-overriding=true不能保证什么 bean 会被覆盖,因为不可预知的配置顺序。另一种方法是从上下文中排除生产 bean(请参阅stackoverflow.com/a/48134123/355438)
标签: java spring spring-test