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
This commit is contained in:
Sam Brannen 2016-02-29 01:04:15 +01:00
parent 197434b3ec
commit df7b24b8e7
3 changed files with 4 additions and 3 deletions

View File

@ -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;

View File

@ -135,7 +135,7 @@ public class AnnotationConfigTransactionalTestNGSpringContextTests
}
@Test
public void modifyTestDataWithinTransaction() {
void modifyTestDataWithinTransaction() {
assertInTransaction(true);
assertAddPerson(JANE);
assertAddPerson(SUE);

View File

@ -205,7 +205,7 @@ public class ConcreteTransactionalTestNGSpringContextTests extends AbstractTrans
}
@Test
public void modifyTestDataWithinTransaction() {
void modifyTestDataWithinTransaction() {
assertInTransaction(true);
assertAddPerson(JANE);
assertAddPerson(SUE);