ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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

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

Spring Boot版本:2.7.15

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

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

示例代码:

@Service
public class UserService {@Autowiredprivate 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 {@Autowiredprivate UserService userService;@Testpublic void testUserService() {assertEquals("user list", userService.queryUsers());}
}

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

@Test
public void testUserService() {assertEquals("user list", userService.queryUsers());// 查看容器中的beanSystem.out.println(ctx.getBeanDefinitionCount());for (String name : ctx.getBeanDefinitionNames()) {System.out.println(name);}
}

结果如下:
在这里插入图片描述
容器中只有10个bean

如果不设置@SpringBootTest的两个属性,结果如下:
在这里插入图片描述
容器中有133个bean,执行时间大大增加

返回列表