spring testing: Another CacheManager with same name 'myCacheManager' already exists in the same VM
ehcache, spring-test
Solution
Add `@DirtiesContext` annotation to your test class:
@ContextConfiguration(...)
@RunWith(...)
@DirtiesContext // <== add e.g. on class level
public class MyTest {
// ...
}
This annotation indicates that the application context associated with a test is dirty and should be closed. Subsequent tests will be supplied a new context. Works on class-level and method-level.
Problem
Before you mark this as duplicate please read the question first. I've read all the stuff about this exception however it does not solve the issue for me. And I do get a slightly different exception eg `Another CacheManager with same name 'myCacheManager' already exists` instead of `Another unnamed CacheManager already exists`. Spring config: ``` <cache:annotation-driven cache-manager="cacheManager"/> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cacheManager-ref="ehcache"/> <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:configLocation="ehcache.xml" p:cacheManagerName="myCacheManager" p:shared="true"/> ``` ehcache ``` <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false" name="myCacheManager"> </ehcache> ``` The Problem is that I have 1 (in the future more) test classes that test security. these classes also load a SecurityContext.xml So most test classes have this annotations: ``` @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:ApplicationContext.xml") ``` However the class causing the issue: ``` @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:ApplicationContext.xml", "classpath:SecurityContext.xml" }) ``` It seems since locations are different the context is loaded again but ehcacheManager is still active from previous test. Note: this happens only when running multiple tests (eg. like clean + build). Running this test class separately works perfectly fine. Whats the issue? How can I solve it?