@SpringBootTest 原理解析
2022-12-20 21:29:46 0 举报
AI智能生成
@SpringBootTest 原理解析
作者其他创作
大纲/内容
DefaultCacheAwareContextLoaderDelegate#loadContextInternal
SpringBootContextLoader#loadContext (重要)
createBootstrapContext 创建了applicationContext
1. 创建了 TestContextManager 对象
1. 从测试类上加载注解 @TestExecutionListeners
2. 加载默认的 spring.factories
2. 加载 TestExecutionListeners (两种策略)
3. 执行 TestExecutionListener#beforeTestClass 回调方法
1. beforeAll() 方法
1. 执行 TestExecutionListener#prepareTestInstance回调方法
2. postProcessTestInstance() 方法
1. 执行 TestExecutionListener#beforeTestMethod 回调方法
3. beforeEach() 方法
4. beforeTestExecution() 方法
1. 执行 TestExecutionListener#afterTestExecution 回调方法
5. afterTestExecution() 方法
1. 执行 TestExecutionListener#afterTestMethod 回调方法
6. afterEach() 方法
1. 执行 TestExecutionListener#afterTestClass 回调方法
7. afterAll() 方法
扩展类 SpringExtension
1. DependencyInjectionTestExecutionListener
prepareTestInstance 初始化注入bean
beforeTestMethod 重新注入bean 非常重要
2. MockitoTestExecutionListener
3. EventPublishingTestExecutionListener
重要的 TestExecutionListener 类
DefinitionsParser parser = new DefinitionsParser()
注册 MockitoPostProcessor
MockitoContextCustomizer
MockitoContextCustomizerFactory
重要的 ContextCustomizerFactory 类
解析配置类
注册 MockBean 和 SpyBean,替换原有的bean
再次获取时, bean 就是这个 MockBean 了
postProcessBeanFactory
对所有的 bean 注入 mockBean
postProcessProperties
判断 beanNameRegistry 中是否有注册过 mockBean 和 spyBean
获取 Filed 的对象 和 beanFactory 中的 对象,判断是否一致
inject (最核心的方法)
MockitoPostProcessor
重要的 BeanPostProcessor
@SpringBootTest 原理解析
0 条评论
回复 删除
下一页