From df7b24b8e771abbbebdb034fb436d37812329689 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Mon, 29 Feb 2016 01:04:15 +0100 Subject: [PATCH] Allow non-public @Transactional test methods Prior to this commit, the TransactionalTestExecutionListener required @Transactional test methods to be public; however, neither TestNG nor JUnit 5 require that @Test methods are public. Consequently, non-public transactional test methods silently run *without* a transaction. This commit removes the 'public' restriction on transactional test methods by setting the 'publicMethodsOnly' flag in AnnotationTransactionAttributeSource to false. Issue: SPR-14000 --- .../transaction/TransactionalTestExecutionListener.java | 3 ++- .../AnnotationConfigTransactionalTestNGSpringContextTests.java | 2 +- .../testng/ConcreteTransactionalTestNGSpringContextTests.java | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java index bd78e69039..668717a701 100644 --- a/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionalTestExecutionListener.java @@ -136,7 +136,8 @@ public class TransactionalTestExecutionListener extends AbstractTestExecutionLis @SuppressWarnings("deprecation") private static final TransactionConfigurationAttributes defaultTxConfigAttributes = new TransactionConfigurationAttributes(); - protected final TransactionAttributeSource attributeSource = new AnnotationTransactionAttributeSource(); + // Do not require @Transactional test methods to be public. + protected final TransactionAttributeSource attributeSource = new AnnotationTransactionAttributeSource(false); @SuppressWarnings("deprecation") private TransactionConfigurationAttributes configurationAttributes; diff --git a/spring-test/src/test/java/org/springframework/test/context/testng/AnnotationConfigTransactionalTestNGSpringContextTests.java b/spring-test/src/test/java/org/springframework/test/context/testng/AnnotationConfigTransactionalTestNGSpringContextTests.java index df4dca6383..6c51502737 100644 --- a/spring-test/src/test/java/org/springframework/test/context/testng/AnnotationConfigTransactionalTestNGSpringContextTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/testng/AnnotationConfigTransactionalTestNGSpringContextTests.java @@ -135,7 +135,7 @@ public class AnnotationConfigTransactionalTestNGSpringContextTests } @Test - public void modifyTestDataWithinTransaction() { + void modifyTestDataWithinTransaction() { assertInTransaction(true); assertAddPerson(JANE); assertAddPerson(SUE); diff --git a/spring-test/src/test/java/org/springframework/test/context/testng/ConcreteTransactionalTestNGSpringContextTests.java b/spring-test/src/test/java/org/springframework/test/context/testng/ConcreteTransactionalTestNGSpringContextTests.java index d9223c0c89..d249fc38d9 100644 --- a/spring-test/src/test/java/org/springframework/test/context/testng/ConcreteTransactionalTestNGSpringContextTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/testng/ConcreteTransactionalTestNGSpringContextTests.java @@ -205,7 +205,7 @@ public class ConcreteTransactionalTestNGSpringContextTests extends AbstractTrans } @Test - public void modifyTestDataWithinTransaction() { + void modifyTestDataWithinTransaction() { assertInTransaction(true); assertAddPerson(JANE); assertAddPerson(SUE);