I have a set of tests based which need a spring context.
For fast test execution I want to make sure that the Spring context is initialized just once, then all the tests should be run against this context, then it should shut down.
I already tried the following approaches:
- Use
@RunWith(SpringJUnit4ClassRunner.class)
and@ContextConfiguration(MyAnnotatedConfig.class)
to initialize the spring context - Use a
@RunWith(SpringJUnit4ClassRunner.class)
and@TestExecutionListeners({MyTestExecutionListener.class})
with a handwritten test execution listener that initializes the spring context and injects it into the concrete test classes - Use a
@BeforeClass
listener in a base class and a static field to store the spring context, and a@AfterClass
for shutdown
With all three approaches, the spring context seems to be initialized more than once, which takes a lot of time. It seems that JUnit unloads classes while running tests, so that the content of static fields is sometimes lost.
Is there a way to make sure the spring context is initialized only once?