事务回滚在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() { } } }