在 SpringBoot 中模拟多个 bean



我在 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 上运行测试。

当然,这些豆子必须被嘲笑。

有没有办法像MockBean注释那样手动模拟 bean 并将其替换为 Spring 上下文?我还想删除所有组件的显式声明(数量不小(,只是为了嘲笑。

编辑:我想避免手动编写测试类中的所有组件。组件 bean 是按照约定命名的,所以我想将它们全部获取,应用模拟并运行测试。我们有100+组件。

我相信你已经尝试过显而易见的了?

@Configuration
@MockBeans({YourComponentSuperclass.class})
public class TestConfig {
}

如果这不起作用(例如@MockBean期望一个匹配的 bean 来装饰(,你可以写你自己的BeanFactoryPostProcessor,可能受到 Spring 自己的MockitoPostProcessor的启发(这使得@MockBean起作用(。

相关内容

  • 没有找到相关文章

最新更新