首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不加载整个上下文的情况下加载单个bean以便在Spring boot中进行测试?

如何在不加载整个上下文的情况下加载单个bean以便在Spring boot中进行测试?
EN

Stack Overflow用户
提问于 2021-08-28 10:32:18
回答 1查看 482关注 0票数 1

我有一个依赖于bean B的类A(非常简单的bean,只需要调用一个时钟)。我想对类A进行单元测试,这个bean如何加载?@SpringBootTest加载整个上下文。

EN

Stack Overflow用户

发布于 2021-08-28 10:54:19

您应该使用两个注释的组合:

代码语言:javascript
运行
复制
@ExtendWith(SpringExtension.class)
@Import(
        value = {
                SomeSpringBean.class
        }
)

其中@Import的值你可以在没有spring上下文构建的情况下放入你的非mocking bean中。你可以在这个测试中使用@MockBean注解通过@Import任何spring bean (带有@Configuration或@Component等类)来模拟另一个bean。用法如下:

代码语言:javascript
运行
复制
@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类方法之间显式地进行集成开发环境友好的导航。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68963480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档