加速Spring Boot单元测试的执行速度

Spring Boot版本:2.7.15

SpringBootTest注解可以配置以下属性来加速单元测试的执行:

  1. 如果单元测试不涉及到Controller接口调用,可以配置webEnvironment = SpringBootTest.WebEnvironment.NONE不启动web容器
  2. 可以通过classes = {...}手动指定需要注册到容器中的类,如果不设置该属性,默认会注册应用中所有类

示例代码:

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public String queryUsers() {
        return userMapper.queryUsersFromDB();
    }
}
@Repository
public class UserMapper {
    public String queryUsersFromDB() {
        return "user list";
    }
}
@SpringBootTest(
        webEnvironment = SpringBootTest.WebEnvironment.NONE,
        classes = {UserService.class, UserMapper.class}
)
public class UserServiceTest {
   @Autowired
   private UserService userService;

   @Test
   public void testUserService() {
      assertEquals("user list", userService.queryUsers());
   }
}

可以用以下代码输出容器中注册的所有bean:

@Test
public void testUserService() {
    assertEquals("user list", userService.queryUsers());

    // 查看容器中的bean
    System.out.println(ctx.getBeanDefinitionCount());
    for (String name : ctx.getBeanDefinitionNames()) {
        System.out.println(name);
    }
}

结果如下:
加速Spring Boot单元测试的执行速度_第1张图片
容器中只有10个bean

如果不设置@SpringBootTest的两个属性,结果如下:
加速Spring Boot单元测试的执行速度_第2张图片
容器中有133个bean,执行时间大大增加

你可能感兴趣的:(spring,spring,boot,单元测试,后端)