5.13. Keeping State in Extensions
Usually, an extension is instantiated only once. So the question becomes relevant: How do you keep the state from one invocation of an extension to the next? The ExtensionContext
API provides a Store
exactly for this purpose. Extensions may put values into a store for later retrieval. See the [TimingExtension](#extensions-lifecycle-callbacks-timing-extension)
for an example of using the Store
with a method-level scope. It is important to remember that values stored in an ExtensionContext
during test execution will not be available in the surrounding ExtensionContext
. Since ExtensionContexts
may be nested, the scope of inner contexts may also be limited. Consult the corresponding Javadoc for details on the methods available for storing and retrieving values via the [Store](https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/extension/ExtensionContext.Store.html)
.
ExtensionContext.Store.CloseableResource CloseableResource are notified by an invocation of their close() method in the inverse order they were added in. |