diff --git a/spring-data-graph-parent/pom.xml b/spring-data-graph-parent/pom.xml index dbedc3d67..8b3070311 100644 --- a/spring-data-graph-parent/pom.xml +++ b/spring-data-graph-parent/pom.xml @@ -327,7 +327,8 @@ maven-surefire-plugin 2.6 - always + + once true **/*Tests.java diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/partial/RecommendationTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/partial/RecommendationTest.java index e602bdc46..06d683363 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/partial/RecommendationTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/partial/RecommendationTest.java @@ -13,9 +13,14 @@ import org.springframework.data.graph.neo4j.support.node.Neo4jHelper; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.Rollback; +import org.springframework.test.context.CleanContextCacheTestExecutionListener; import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestExecutionListeners; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; +import org.springframework.test.context.support.DirtiesContextTestExecutionListener; import org.springframework.test.context.transaction.BeforeTransaction; +import org.springframework.test.context.transaction.TransactionalTestExecutionListener; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.Transactional; @@ -25,8 +30,7 @@ import javax.sql.DataSource; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:org/springframework/data/graph/neo4j/partial/Neo4jGraphRecommendationTest-context.xml"}) -//@Ignore("seems to break things in the graph store") -@DirtiesContext +@TestExecutionListeners({CleanContextCacheTestExecutionListener.class, DependencyInjectionTestExecutionListener.class, TransactionalTestExecutionListener.class}) public class RecommendationTest { protected final Log log = LogFactory.getLog(getClass()); diff --git a/spring-data-neo4j/src/test/java/org/springframework/test/context/CleanContextCacheTestExecutionListener.java b/spring-data-neo4j/src/test/java/org/springframework/test/context/CleanContextCacheTestExecutionListener.java new file mode 100644 index 000000000..45b245453 --- /dev/null +++ b/spring-data-neo4j/src/test/java/org/springframework/test/context/CleanContextCacheTestExecutionListener.java @@ -0,0 +1,43 @@ +package org.springframework.test.context; + +import java.applet.AppletContext; +import java.lang.reflect.Field; +import java.util.Map; + +public class CleanContextCacheTestExecutionListener implements TestExecutionListener { + + @Override + public void afterTestClass(TestContext testContext) throws Exception { + Field cacheField = TestContext.class.getDeclaredField("contextCache"); + cacheField.setAccessible(true); + ContextCache cache = (ContextCache) cacheField.get(testContext); + Field cacheMapField = ContextCache.class.getDeclaredField("contextKeyToContextMap"); + cacheMapField.setAccessible(true); + Map cacheMap = (Map) cacheMapField.get(cache); + String[] keys = new String[cacheMap.size()]; + cacheMap.keySet().toArray(keys); + for (String key : keys) { + cache.setDirty(key); + } + } + + @Override + public void beforeTestClass(TestContext testContext) throws Exception { + + } + + @Override + public void prepareTestInstance(TestContext testContext) throws Exception { + + } + + @Override + public void beforeTestMethod(TestContext testContext) throws Exception { + + } + + @Override + public void afterTestMethod(TestContext testContext) throws Exception { + + } +}