|
For the latest stable version, please use Spring Framework 6.2.12! |
Ahead of Time Support for Tests
This chapter covers Spring’s Ahead of Time (AOT) support for integration tests using the Spring TestContext Framework.
The testing support extends Spring’s core AOT support with the following features.
-
Build-time detection of all integration tests in the current project that use the TestContext framework to load an
ApplicationContext.-
Provides explicit support for test classes based on JUnit Jupiter and JUnit 4 as well as implicit support for TestNG and other testing frameworks that use Spring’s core testing annotations — as long as the tests are run using a JUnit Platform
TestEnginethat is registered for the current project.
-
-
Build-time AOT processing: each unique test
ApplicationContextin the current project will be refreshed for AOT processing. -
Runtime AOT support: when executing in AOT runtime mode, a Spring integration test will use an AOT-optimized
ApplicationContextthat participates transparently with the context cache.
|
The |
To provide test-specific runtime hints for use within a GraalVM native image, you have the following options.
-
Implement a custom
TestRuntimeHintsRegistrarand register it globally viaMETA-INF/spring/aot.factories. -
Implement a custom
RuntimeHintsRegistrarand register it globally viaMETA-INF/spring/aot.factoriesor locally on a test class via@ImportRuntimeHints. -
Annotate a test class with
@Reflectiveor@RegisterReflectionForBinding. -
See Runtime Hints for details on Spring’s core runtime hints and annotation support.
|
The |
If you implement a custom ContextLoader, it must implement
AotContextLoader in
order to provide AOT build-time processing and AOT runtime execution support. Note,
however, that all context loader implementations provided by the Spring Framework and
Spring Boot already implement AotContextLoader.
If you implement a custom TestExecutionListener, it must implement
AotTestExecutionListener
in order to participate in AOT processing. See the SqlScriptsTestExecutionListener in
the spring-test module for an example.