关键抽象
框架的核心由 TestContextManager 类以及 TestContext、TestExecutionListener 和 SmartContextLoader 接口组成。
TestContextManager 为每个测试类创建(例如,在 JUnit Jupiter 中执行单个测试类内的所有测试方法)。
TestContextManager 反过来管理一个持有当前测试上下文的 TestContext。
TestContextManager 还会随着测试的进行更新 TestContext 的状态,并委托给 TestExecutionListener 实现,这些实现通过提供依赖注入、管理事务等来增强实际的测试执行。
SmartContextLoader 负责为给定的测试类加载 ApplicationContext。
有关更多信息和各种实现的示例,请参阅 javadoc 和 Infra 测试套件。
TestContext
TestContext 封装了运行测试的上下文(与实际使用的测试框架无关),并为其负责的测试实例提供上下文管理和缓存支持。
如果请求,TestContext 还会委托给 SmartContextLoader 来加载 ApplicationContext。
TestContextManager
TestContextManager 是 Infra TestContext 框架的主要入口点,负责管理单个 TestContext 并在定义的测试执行点向每个注册的 TestExecutionListener 发送事件信号:
-
在特定测试框架的任何 “
before class” 或 “before all” 方法之前。 -
测试实例后处理。
-
在特定测试框架的任何 “
before” 或 “before each” 方法之前。 -
在执行测试方法之前但在测试设置之后立即执行。
-
在执行测试方法之后但在测试拆解之前立即执行。
-
在特定测试框架的任何 “
after” 或 “after each” 方法之后。 -
在特定测试框架的任何 “
after class” 或 “after all” 方法之后。
TestExecutionListener
TestExecutionListener 定义了用于响应由注册了该监听器的 TestContextManager 发布的测试执行事件的 API。
请参阅 TestExecutionListener 配置。
Context Loaders
ContextLoader 是一个策略接口,用于为 Infra TestContext 框架管理的集成测试加载 ApplicationContext。
您应该实现 SmartContextLoader 而不是此接口,以提供对组件类、活动 Bean 定义配置文件 (profiles)、测试属性源、上下文层次结构和 WebApplicationContext 支持的支持。
SmartContextLoader 是 ContextLoader 接口的扩展,它取代了原始的最小 ContextLoader SPI。
具体来说,SmartContextLoader 可以选择处理资源位置、组件类或上下文初始化器。
此外,SmartContextLoader 可以在其加载的上下文中设置活动 Bean 定义配置文件和测试属性源。
Infra 提供了以下实现:
-
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。