参考:为什么阿里规定需要在事务注解@Transactional中指定rollbackFor?
SpringBoot单元测试,@Rollback事务回滚避免脏数据

在测试类上加上@Transactional

  1. @SpringBootTest
  2. @Transactional //执行回滚
  3. public class UsersDaoTest {}

junit使用回滚注解@Rollback,配合事务注解@Transactional,来回滚事务。

  1. RollBack可以定义在测试类上,对整个类起作用, ```java @SpringBootTest @Transactional @Rollback public class UserServiceTest { @Test void testInserUser() {

    1. //向数据库增加一条用户信息
    2. inserUser(User user);

    }

    @Test void testDeleteUser() {

    1. //删除一条用户信息
    2. deleteUser(int userId);

    }

}

  1. 2. 也可以对方法单独定义。定义在类上,这样每个方法默认都是要回滚的。方法执行完单元测试,数据库不会产生脏数据。
  2. ```java
  3. @Test
  4. @Rollback
  5. void testMethod() {
  6. //向数据库增加一条用户信息
  7. inserUser(User user);
  8. }
  1. 如果测试的时候想要产生真实数据,可以将@Rollback设置为无效
    1. @Test
    2. @Rollback(false)
    3. void testMethod() {
    4. //向数据库增加一条用户信息
    5. inserUser(User user);
    6. }