事务回滚在JUnit5的@Nested类中的测试用例中不起作用

我使用spring-boot,JUnit5,Mybatis。

@SpringJUnitJupiterConfig(classes = {RepositoryTestConfig.class}) @MapperScan @Rollback @Transactional public class TestClass { @Autowired private TestMapper testMapper; @BeforeEach void init() { User user = new User(); testMapper.insert(user); } @Test public void test1() { // (1) success rollback } @Nested class WhenExistData { @Test public void test2() { // (2) rollback not working } } } 

(1)正在回滚。 并输出以下日志。

 2017-05-26 22:21:29 [INFO ](TransactionContext.java:136) Rolled back transaction for test context ... 

但是,(2)不起作用。 我希望能够回滚到@Nested

这是可以预期的: Spring TestContext Framework从未支持嵌套测试类的“inheritance”。

因此,你的“解决方案”实际上是在这个时间点实现目标的正确方法。

但请注意,我可以与SPR-15366一起为嵌套测试类添加对“伪inheritance” 的支持 。

问候,

Sam( Spring TestContext Framework的作者

我用以下方式解决了它..

 @SpringJUnitJupiterConfig(classes = {RepositoryTestConfig.class}) @MapperScan @Rollback @Transactional public class TestClass { @Autowired private TestMapper testMapper; @BeforeEach void init() { User user = new User(); testMapper.insert(user); } @Nested @SpringJUnitJupiterConfig(classes = {RepositoryTestConfig.class}) @MapperScan @Rollback @Transactional class WhenExistData { @Test public void test2() { } } }