From 5c6f65f218f16e9678d22133756b4b4109fd8515 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Tue, 1 Oct 2019 10:49:17 -0400 Subject: [PATCH] GH-3061: Add `@DirtiesContext` to JPA tests Fixes https://github.com/spring-projects/spring-integration/issues/3061 Without a `@DirtiesContext` we keep not only a ctx in the cache, but also an embedded DB instance, which is shared between contexts. When ctx cache clean up happens, several ctxes would like to destroy their associated embedded DB which, essentially, is the same in-memory instance * The `@DirtiesContext` give us a chance to destroy embedded DB for the particular ctx in isolation --- .../jpa/core/HibernateJpaOperationsTests.java | 13 +++++++------ .../integration/jpa/core/JpaExecutorTests.java | 2 ++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/spring-integration-jpa/src/test/java/org/springframework/integration/jpa/core/HibernateJpaOperationsTests.java b/spring-integration-jpa/src/test/java/org/springframework/integration/jpa/core/HibernateJpaOperationsTests.java index 99bead5a89..fe67599a01 100644 --- a/spring-integration-jpa/src/test/java/org/springframework/integration/jpa/core/HibernateJpaOperationsTests.java +++ b/spring-integration-jpa/src/test/java/org/springframework/integration/jpa/core/HibernateJpaOperationsTests.java @@ -21,16 +21,18 @@ import java.text.ParseException; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringRunner; /** * @author Gunnar Hillert + * @author Artem Bilan + * * @since 2.2 * */ -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration +@RunWith(SpringRunner.class) +@DirtiesContext public class HibernateJpaOperationsTests extends AbstractJpaOperationsTests { @Test @@ -65,8 +67,7 @@ public class HibernateJpaOperationsTests extends AbstractJpaOperationsTests { @Test @Override - public void testExecuteSelectWithNativeQueryReturningEntityClass() - throws ParseException { + public void testExecuteSelectWithNativeQueryReturningEntityClass() throws ParseException { super.testExecuteSelectWithNativeQueryReturningEntityClass(); } diff --git a/spring-integration-jpa/src/test/java/org/springframework/integration/jpa/core/JpaExecutorTests.java b/spring-integration-jpa/src/test/java/org/springframework/integration/jpa/core/JpaExecutorTests.java index 16d7febdcc..2bcfbf9340 100644 --- a/spring-integration-jpa/src/test/java/org/springframework/integration/jpa/core/JpaExecutorTests.java +++ b/spring-integration-jpa/src/test/java/org/springframework/integration/jpa/core/JpaExecutorTests.java @@ -42,6 +42,7 @@ import org.springframework.integration.jpa.test.entity.StudentDomain; import org.springframework.integration.support.MessageBuilder; import org.springframework.integration.test.util.TestUtils; import org.springframework.messaging.Message; +import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; @@ -54,6 +55,7 @@ import org.springframework.transaction.annotation.Transactional; * @since 2.2 */ @RunWith(SpringRunner.class) +@DirtiesContext public class JpaExecutorTests { @Autowired