diff --git a/spring-modulith-test/src/main/java/org/springframework/modulith/test/Scenario.java b/spring-modulith-test/src/main/java/org/springframework/modulith/test/Scenario.java index 5969ecd1..94d672d8 100644 --- a/spring-modulith-test/src/main/java/org/springframework/modulith/test/Scenario.java +++ b/spring-modulith-test/src/main/java/org/springframework/modulith/test/Scenario.java @@ -151,7 +151,7 @@ public class Scenario { Assert.notNull(supplier, "Supplier must not be null!"); Assert.notNull(cleanupCallback, "Cleanup callback must not be null!"); - return stimulate((tx, e) -> supplier.get(), cleanupCallback); + return stimulate((tx) -> tx.execute(status -> supplier.get()), cleanupCallback); } /** diff --git a/spring-modulith-test/src/test/java/org/springframework/modulith/test/ScenarioUnitTests.java b/spring-modulith-test/src/test/java/org/springframework/modulith/test/ScenarioUnitTests.java index 8d2c2553..794434a9 100644 --- a/spring-modulith-test/src/test/java/org/springframework/modulith/test/ScenarioUnitTests.java +++ b/spring-modulith-test/src/test/java/org/springframework/modulith/test/ScenarioUnitTests.java @@ -35,6 +35,9 @@ import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.PayloadApplicationEvent; import org.springframework.modulith.test.PublishedEventsAssert.PublishedEventAssert; import org.springframework.modulith.test.Scenario.When; +import org.springframework.transaction.TransactionException; +import org.springframework.transaction.support.SimpleTransactionStatus; +import org.springframework.transaction.support.TransactionCallback; import org.springframework.transaction.support.TransactionOperations; /** @@ -43,14 +46,14 @@ import org.springframework.transaction.support.TransactionOperations; * @author Oliver Drotbohm */ @ExtendWith(MockitoExtension.class) -public class ScenarioUnitTests { +class ScenarioUnitTests { private static final Duration DELAY = Duration.ofMillis(50); private static final Duration WAIT_TIME = Duration.ofMillis(101); private static final Duration TIMED_OUT = Duration.ofMillis(150); - @Mock TransactionOperations tx; @Mock ApplicationEventPublisher publisher; + TransactionOperations tx = StubTransactionOperations.INSTANCE; @Test // GH-136 void timesOutIfNoEventArrivesInTime() throws Throwable { @@ -417,6 +420,20 @@ public class ScenarioUnitTests { record SomeEvent(String payload) {} + enum StubTransactionOperations implements TransactionOperations { + + INSTANCE; + + /* + * (non-Javadoc) + * @see org.springframework.transaction.support.TransactionOperations#execute(org.springframework.transaction.support.TransactionCallback) + */ + @Override + public T execute(TransactionCallback action) throws TransactionException { + return action.doInTransaction(new SimpleTransactionStatus()); + } + } + static class CapturingExceptionHandler implements UncaughtExceptionHandler { Throwable caught;