【发布时间】:2021-03-23 19:19:47
【问题描述】:
我想使用存根 bean 运行大部分 Spring Boot 测试(它基本上什么都不做),但有些测试实际上应该使用真正的 Spring Boot 的自动配置 bean。如何在默认情况下将存根 bean 放在测试上下文中,但有条件地将其切换为真正的 bean?
我所有的测试都来自几个提供正确测试设置的超类,而这个特定的 bean 设置与之正交,所以我不能:
- 创建两个新的/不同的超类,一个用于存根,一个用于真实的
- 在测试类中使用
@MockBean,因为大多数时候我想要存根,不需要记得添加这个 - 在超类中使用
@MockBean,因为我不知道如何在我想要 Spring Boot 自动配置模拟的特定测试类中覆盖模拟。
我正在寻找一个简单易用的解决方案,例如 JUnit-Rule;测试类上的注释以及 TestExecutionListener;或其他类似的东西。
请注意,真正的 bean 是一个完全自动配置的 bean,我在我的生产代码中没有任何配置(仅在 application.properties 中) - 它实际上是 JavaMailSender 但那个细节应该无关紧要.
【问题讨论】:
标签: java spring-boot unit-testing spring-boot-test