测试的提前支持
本章介绍了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作为示例。