繁体   English   中英

在SpringBoot中模拟多个bean

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM