Spring Boot版本:2.7.15
SpringBootTest
注解可以配置以下属性来加速单元测试的执行:
- 如果单元测试不涉及到Controller接口调用,可以配置
webEnvironment = SpringBootTest.WebEnvironment.NONE
不启动web容器 - 可以通过
classes = {...}
手动指定需要注册到容器中的类,如果不设置该属性,默认会注册应用中所有类
示例代码:
@ServicepublicclassUserService{@AutowiredprivateUserMapper userMapper;publicStringqueryUsers(){return userMapper.queryUsersFromDB();}}
@RepositorypublicclassUserMapper{publicStringqueryUsersFromDB(){return"user list";}}
@SpringBootTest(
webEnvironment =SpringBootTest.WebEnvironment.NONE,
classes ={UserService.class,UserMapper.class})publicclassUserServiceTest{@AutowiredprivateUserService userService;@TestpublicvoidtestUserService(){assertEquals("user list", userService.queryUsers());}}
可以用以下代码输出容器中注册的所有bean:
@TestpublicvoidtestUserService(){assertEquals("user list", userService.queryUsers());// 查看容器中的beanSystem.out.println(ctx.getBeanDefinitionCount());for(String name : ctx.getBeanDefinitionNames()){System.out.println(name);}}
结果如下:
容器中只有10个bean
如果不设置
@SpringBootTest
的两个属性,结果如下:
容器中有133个bean,执行时间大大增加
本文转载自: https://blog.csdn.net/baiyuxuan123123/article/details/135751880
版权归原作者 byx2000 所有, 如有侵权,请联系我们删除。
版权归原作者 byx2000 所有, 如有侵权,请联系我们删除。