mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-17 16:39:29 +00:00
Introduce Spring property to disable context pausing for tests
Spring Framework 7.0 introduced support for pausing inactive application contexts between test classes and restarting them once they are needed again. If pausing and restarting are fast, this feature does not have a negative impact on test suites. However, if the pausing or restarting of certain Lifecycle components in the application context is slow, that can have a negative impact on the duration of the overall test suite. In gh-36044, we hope to find a way to avoid unnecessarily pausing an application context after a test class if the same context is used by the next test class that is run. That should help reduce the risk of a negative impact caused by the pause/restart feature; however, for certain scenarios that may not be enough. In light of that, this commit introduces a mechanism for completely disabling the pausing feature via a Spring property or JVM system property, as follows. -Dspring.test.context.cache.pause=never See gh-35168 See gh-36044 Closes gh-36117
This commit is contained in:
@@ -124,6 +124,10 @@ on a test class. See xref:testing/annotations/integration-junit-jupiter.adoc#int
|
||||
| The maximum size of the context cache in the _Spring TestContext Framework_. See
|
||||
xref:testing/testcontext-framework/ctx-management/caching.adoc[Context Caching].
|
||||
|
||||
| `spring.test.context.cache.pause`
|
||||
| The pause mode for the context cache in the _Spring TestContext Framework_. See
|
||||
xref:testing/testcontext-framework/ctx-management/caching.adoc[Context Caching].
|
||||
|
||||
| `spring.test.context.failure.threshold`
|
||||
| The failure threshold for errors encountered while attempting to load an `ApplicationContext`
|
||||
in the _Spring TestContext Framework_. See
|
||||
|
||||
+16
@@ -73,6 +73,22 @@ will be in a "stopped" state until the context is used again by a test. Note, ho
|
||||
that `SmartLifecycle` components can opt out of pausing by returning `false` from
|
||||
`SmartLifecycle#isPauseable()`.
|
||||
|
||||
[TIP]
|
||||
====
|
||||
If you encounter issues with `Lifecycle` components that cannot or should not opt out of
|
||||
pausing, or if you discover that your test suite runs more slowly due to the pausing and
|
||||
restarting of application contexts, you can disable the pausing feature from the command
|
||||
line or a build script by setting a JVM system property named
|
||||
`spring.test.context.cache.pause` to `never`. For example:
|
||||
|
||||
```shell
|
||||
-Dspring.test.context.cache.pause=never
|
||||
```
|
||||
|
||||
As an alternative, you can set the same property via the
|
||||
xref:appendix.adoc#appendix-spring-properties[`SpringProperties`] mechanism.
|
||||
====
|
||||
|
||||
Since having a large number of application contexts loaded within a given test suite can
|
||||
cause the suite to take an unnecessarily long time to run, it is often beneficial to
|
||||
know exactly how many contexts have been loaded and cached. To view the statistics for
|
||||
|
||||
Reference in New Issue
Block a user