核心抽象
框架的核心由 TestContextManager
类以及 TestContext
、TestExecutionListener
和
SmartContextLoader
接口组成。为每个测试类创建一个 TestContextManager
(例如,用于
JUnit Jupiter 中单个测试类中所有测试方法的执行)。反过来,TestContextManager
管理一个
TestContext
,该 TestContext
包含当前测试的上下文。TestContextManager
还会在测试进行过程中
更新 TestContext
的状态,并委托给 TestExecutionListener
实现,这些实现通过提供依赖注入、
管理事务等来实际执行测试。SmartContextLoader
负责为给定的测试类加载 ApplicationContext
。
有关各种实现的更多信息和示例,请参阅 javadoc
和 Spring 测试套件。
TestContext
TestContext
封装了运行测试的上下文(与实际使用的测试框架无关),并为它负责的测试实例
提供了上下文管理和缓存支持。如果需要,TestContext
还会委托给 SmartContextLoader
来加载
ApplicationContext
。
TestContextManager
TestContextManager
是 Spring TestContext Framework 的主要入口点,负责管理单个
TestContext
并在明确定义的测试执行点向每个注册的 TestExecutionListener
发送事件:
-
在特定测试框架的任何“
before class
”或“before all
”方法之前。 -
测试实例后处理。
-
在特定测试框架的任何“
before
”或“before each
”方法之前。 -
紧接在测试方法执行之前,但在测试设置之后。
-
紧接在测试方法执行之后,但在测试拆卸之前。
-
在特定测试框架的任何“
after
”或“after each
”方法之后。 -
在特定测试框架的任何“
after class
”或“after all
”方法之后。
TestExecutionListener
TestExecutionListener
定义了对由 TestContextManager
(监听器已注册到该管理器)发布的
测试执行事件作出反应的 API。请参阅 TestExecutionListener
配置。
上下文加载器
ContextLoader
是一个策略接口,用于为 Spring TestContext Framework 管理的集成测试加载
ApplicationContext
。您应该实现 SmartContextLoader
而不是此接口,以提供对组件类、
活动 bean 定义配置文件、测试属性源、上下文层次结构和 WebApplicationContext
支持。
SmartContextLoader
是 ContextLoader
接口的扩展,它取代了原始的最小 ContextLoader
SPI。
具体来说,SmartContextLoader
可以选择处理资源位置、组件类或上下文初始化器。此外,
SmartContextLoader
可以在其加载的上下文中设置活动的 bean 定义配置文件和测试属性源。
Spring 提供了以下实现:
-
DelegatingSmartContextLoader
:两个默认加载器之一,它内部委托给AnnotationConfigContextLoader
、GenericXmlContextLoader
或GenericGroovyXmlContextLoader
,具体取决于为测试类声明的配置或默认位置或默认配置类的存在。 Groovy 支持仅在 Groovy 位于类路径上时启用。 -
WebDelegatingSmartContextLoader
:两个默认加载器之一,它内部委托给AnnotationConfigWebContextLoader
、GenericXmlWebContextLoader
或GenericGroovyXmlWebContextLoader
,具体取决于为测试类声明的配置或默认位置或默认配置类的存在。 仅当测试类上存在@WebAppConfiguration
时才使用 webContextLoader
。 Groovy 支持仅在 Groovy 位于类路径上时启用。 -
AnnotationConfigContextLoader
:从组件类加载标准ApplicationContext
。 -
AnnotationConfigWebContextLoader
:从组件类加载WebApplicationContext
。 -
GenericGroovyXmlContextLoader
:从作为 Groovy 脚本或 XML 配置文件的资源位置加载标准ApplicationContext
。 -
GenericGroovyXmlWebContextLoader
:从作为 Groovy 脚本或 XML 配置文件的资源位置加载WebApplicationContext
。 -
GenericXmlContextLoader
:从 XML 资源位置加载标准ApplicationContext
。 -
GenericXmlWebContextLoader
:从 XML 资源位置加载WebApplicationContext
。