A recent discussion in the #spring channel on Kotlin Slack pointed out that issues arise when using @DirtiesContext to evict an ApplicationContext from the cache between test methods if the test class is executed with JUnit Jupiter and @TestInstance(PER_CLASS) semantics.
Constructor injection for Spring-managed components will not work properly if @DirtiesContext is used to evict the test's ApplicationContext before or after test methods.
The reason is that the test instance will retain references to beans that came from a (now) closed ApplicationContext, and dependency injection will not occur again (to reset the references) since the constructor will only be invoked once.
To use @DirtiesContext before or after methods, one must allow dependencies from Spring to be injected via fields or setter/configuration methods.
- Document this in the Testing chapter of the reference manual