此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Framework 6.2.10! |
提前支持测试
本章介绍了 Spring 对使用Spring TestContext 框架进行集成测试的提前 (AOT) 支持。
测试支持扩展了 Spring 的核心 AOT 支持,其中包含以下功能。
-
当前项目中使用TestContext 框架加载
ApplicationContext
.-
为基于 JUnit Jupiter 和 JUnit 4 的测试类提供显式支持作为对 TestNG 和其他使用 Spring 核心的测试框架的隐式支持测试注释 — 只要测试是使用 JUnit 平台运行的
TestEngine
为当前项目注册的。
-
-
构建时 AOT 处理:每个独特的测试
ApplicationContext
在当前项目中将刷新以进行 AOT 处理。 -
运行时 AOT 支持:在 AOT 运行时模式下执行时,Spring 集成测试将使用 AOT 优化的
ApplicationContext
透明地参与上下文缓存。
默认情况下,所有测试都在 AOT 模式下启用。但是,您可以有选择地禁用AOT 模式下的整个测试类或单个测试方法,方法是使用@DisabledInAotMode
. 使用 JUnit Jupiter 时,您可以有选择地启用或禁用 GraalVM 本机中的测试图片来自 Jupiter 的@EnabledInNativeImage
和@DisabledInNativeImage
附注。 请注意@DisabledInAotMode
在以下情况下,还会禁用带注释的测试类或测试方法在 GraalVM 本机映像中运行,类似于 JUnit Jupiter 的@DisabledInNativeImage
注解。
默认情况下,如果在构建时 AOT 处理过程中遇到错误,则会抛出异常,并且整个进程将立即失败。 如果您希望在遇到错误后继续构建时 AOT 处理,您可以禁用 这 |
这 |
要提供特定于测试的运行时提示以在 GraalVM 本机映像中使用,您有以下选项。
-
实现自定义
TestRuntimeHintsRegistrar
并通过以下方式在全球范围内注册META-INF/spring/aot.factories
. -
实现自定义
RuntimeHintsRegistrar
并通过以下方式在全球范围内注册META-INF/spring/aot.factories
或本地测试类 通过@ImportRuntimeHints
. -
有关 Spring 核心运行时提示的详细信息,请参阅运行时提示和注释支持。
这 |
如果您实现自定义ContextLoader
,它必须实现AotContextLoader
在 order 提供 AOT 构建时处理和 AOT 运行时执行支持。 注意 但是,Spring Framework 和Spring Boot 提供的所有上下文加载器实现都已经实现AotContextLoader
.
如果您实现自定义TestExecutionListener
,它必须实现AotTestExecutionListener
以参与 AOT 处理。请参阅SqlScriptsTestExecutionListener
在 这spring-test
模块作为示例。