我有一个依赖于bean B的类A(非常简单的bean,只需要调用一个时钟)。我想对类A进行单元测试,这个bean如何加载?@SpringBootTest加载整个上下文。
发布于 2021-08-28 10:54:19
您应该使用两个注释的组合:
@ExtendWith(SpringExtension.class)
@Import(
value = {
SomeSpringBean.class
}
)
其中@Import
的值你可以在没有spring上下文构建的情况下放入你的非mocking bean中。你可以在这个测试中使用@MockBean注解通过@Import任何spring bean (带有@Configuration或@Component等类)来模拟另一个bean。用法如下:
@ExtendWith(SpringExtension.class)
@Import(
value = {
SomeSpringBean.class
}
)
class SomeSpringTest {
@MockBean
private MockedBean mock;
@Autowired
private SomeSpringBean bean;
...
}
在javadoc中查看更多:
表示要导入的一个或多个组件类-通常是@Configuration类。提供与Spring XML中的元素等效的功能。允许导入@Configuration类、ImportSelector和ImportBeanDefinitionRegistrar实现,以及常规组件类(从4.2开始;类似于AnnotationConfigApplicationContext.register)。在导入的@Configuration类中声明的@Bean定义应该通过使用@Autowired注入来访问。可以自动连接bean本身,也可以自动连接声明bean的配置类实例。后一种方法允许在@Configuration类方法之间显式地进行集成开发环境友好的导航。
https://stackoverflow.com/questions/68963480
复制相似问题