[英]Mock multiple beans in SpringBoot
我在SpringBoot中进行了一项测试,该测试应以相同的方式检查多个bean:
@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class EndpointsTest implements ApplicationContextAware {
@MockBean
ComponentA componentA;
@MockBean
ComponentB componentB;
...
由于我不想为每个组件编写新的虚拟测试,因此尽管要获取所有bean(因此使用ApplicationContextAware
),然后在每个此类bean上运行测试。
当然,必须嘲笑这些bean。
有没有办法像MockBean
注释那样手动模拟bean并在Spring上下文中替换它? 我也想删除所有组件的显式声明(数量不小),仅出于模拟目的。
编辑:我想避免手动编写测试类中的所有组件。 组件bean是按照约定命名的,因此我想全部获取它们,应用模拟并运行测试。 我们有100多个组件。
我相信您尝试过显而易见的事情吗?
@Configuration
@MockBeans({YourComponentSuperclass.class})
public class TestConfig {
}
如果这不起作用(例如,因为@MockBean希望装饰一个匹配的bean),则可以编写自己的BeanFactoryPostProcessor
,可能是受Spring自己的MockitoPostProcessor
启发(使@MockBean
工作)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.