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 {
+
+ }
+}