Spring Boot版本:2.7.15
SpringBootTest注解可以配置以下属性来加速单元测试的执行:
- 如果单元测试不涉及到Controller接口调用,可以配置webEnvironment = SpringBootTest.WebEnvironment.NONE不启动web容器
- 可以通过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); } }
结果如下:
容器中只有10个bean
如果不设置@SpringBootTest的两个属性,结果如下:
容器中有133个bean,执行时间大大增加
猜你喜欢
网友评论
- 搜索
- 最新文章
- 热门文章