测试的提前支持
本章介绍了Spring对集成测试使用Spring TestContext框架的提前支持(AOT)。
测试支持通过以下功能扩展了Spring的核心AOT支持。
-
在当前项目中构建时检测所有使用TestContext框架加载
ApplicationContext
的集成测试。-
为基于JUnit Jupiter和JUnit 4的测试类提供显式支持,以及对使用Spring核心测试注解的TestNG和其他测试框架的隐式支持,只要测试是使用为当前项目注册的JUnit Platform
TestEngine
运行的。
-
-
构建时AOT处理:当前项目中每个唯一的测试
ApplicationContext
将被刷新以进行AOT处理。 -
运行时AOT支持:在AOT运行时模式下执行时,Spring集成测试将使用经过AOT优化的
ApplicationContext
,与上下文缓存透明地交互。
默认情况下,所有测试在AOT模式下都是启用的。但是,您可以通过使用@DisabledInAotMode
对整个测试类或单个测试方法在AOT模式下进行选择性禁用。当使用JUnit Jupiter时,您可以通过Jupiter的@EnabledInNativeImage
和@DisabledInNativeImage
注解有选择地在GraalVM本机映像中启用或禁用测试。请注意,@DisabledInAotMode
在GraalVM本机映像中运行时也会禁用带注解的测试类或测试方法,类似于JUnit Jupiter的@DisabledInNativeImage
注解。
默认情况下,在构建时AOT处理过程中遇到错误时,将抛出异常,并立即失败整个过程。 如果您希望在遇到错误后继续构建时AOT处理,可以禁用 可以通过在命令行或构建脚本中设置名为 |
|
为了在GraalVM本机映像中提供测试特定的运行时提示,您有以下选项。
-
实现自定义
TestRuntimeHintsRegistrar
并通过META-INF/spring/aot.factories
全局注册。 -
实现自定义
RuntimeHintsRegistrar
并通过META-INF/spring/aot.factories
全局注册,或者通过@ImportRuntimeHints
在测试类上本地注册。 -
为测试类添加
@Reflective
或@RegisterReflectionForBinding
注解。 -
查看运行时提示,了解有关Spring核心运行时提示和注解支持的详细信息。
|
如果您实现自定义ContextLoader
,它必须实现AotContextLoader
以提供AOT构建时处理和AOT运行时执行支持。但是,请注意,Spring Framework和Spring Boot提供的所有上下文加载器实现已经实现了AotContextLoader
。
如果您实现自定义TestExecutionListener
,它必须实现AotTestExecutionListener
以参与AOT处理。请参阅spring-test
模块中的SqlScriptsTestExecutionListener
作为示例。