igr*_*igr 5 java testing spring mockito spring-boot
我在 SpringBoot 中有一个测试,应该以非常相同的方式检查多个 bean:
@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class EndpointsTest implements ApplicationContextAware {
@MockBean
ComponentA componentA;
@MockBean
ComponentB componentB;
...
Run Code Online (Sandbox Code Playgroud)
由于我不想为每个组件编写新的虚拟测试,因此我想获取所有 bean(因此使用ApplicationContextAware),然后对每个此类 bean 运行测试。
当然,这些豆子必须被嘲笑。
有没有办法像MockBean注释一样手动模拟 bean 并将其替换为 Spring 上下文?我还想删除所有组件的显式声明(数量不小),只是为了模拟的目的。
编辑:我想避免手动编写测试类中的所有组件。组件 bean 是按照约定命名的,因此我想获取所有它们,应用模拟并运行测试。我们有 100 多个组件。
我相信你已经尝试过显而易见的事情了吗?
@Configuration
@MockBeans({YourComponentSuperclass.class})
public class TestConfig {
}
Run Code Online (Sandbox Code Playgroud)
如果这不起作用(例如因为 @MockBean 需要一个匹配的 bean 来装饰),您可以编写自己的BeanFactoryPostProcessor,可能受到 Spring 自己的启发MockitoPostProcessor(这可以@MockBean工作)。
| 归档时间: |
|
| 查看次数: |
4028 次 |
| 最近记录: |