我使用spring-boot,JUnit5,Mybatis。
$data = $stats->orderBy('crossbow', 'desc')->take(1);
$data = $stats->orderBy('maul', 'desc')->take(1)->union($data);
$data = $stats->orderBy('swordtwo', 'desc')->take(1)->union($data);
$data = $stats->orderBy('swordone', 'desc')->take(1)->union($data);
$data = $data->get();
(1)正在回滚。并输出以下日志。
@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
}
}
}
但是,(2)不起作用。我希望能够回滚到2017-05-26 22:21:29 [INFO ](TransactionContext.java:136) Rolled back transaction for test context ...
。
答案 0 :(得分:6)
这是预期的: Spring TestContext Framework 从未支持嵌套测试类的“继承”。
因此,您的“解决方案”实际上是实现此目标的正确方法。
但是,请注意,我可以与SPR-15366一起为嵌套测试类添加对“伪继承”的支持。
此致
Sam( Spring TestContext Framework的作者)
答案 1 :(得分:1)
我用以下方式解决了它。
@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() {
}
}
}