参考:为什么阿里规定需要在事务注解@Transactional中指定rollbackFor?
SpringBoot单元测试,@Rollback事务回滚避免脏数据
在测试类上加上@Transactional
@SpringBootTest
@Transactional //执行回滚
public class UsersDaoTest {}
junit使用回滚注解@Rollback,配合事务注解@Transactional,来回滚事务。
RollBack可以定义在测试类上,对整个类起作用, ```java @SpringBootTest @Transactional @Rollback public class UserServiceTest { @Test void testInserUser() {
//向数据库增加一条用户信息
inserUser(User user);
}
@Test void testDeleteUser() {
//删除一条用户信息
deleteUser(int userId);
}
}
2. 也可以对方法单独定义。定义在类上,这样每个方法默认都是要回滚的。方法执行完单元测试,数据库不会产生脏数据。
```java
@Test
@Rollback
void testMethod() {
//向数据库增加一条用户信息
inserUser(User user);
}
- 如果测试的时候想要产生真实数据,可以将@Rollback设置为无效
@Test
@Rollback(false)
void testMethod() {
//向数据库增加一条用户信息
inserUser(User user);
}