Spring Boot 2.x 实践记:@SpringBootTest
Posted mickjoust
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 2.x 实践记:@SpringBootTest相关的知识,希望对你有一定的参考价值。
目录
- @SpringBootTest
- 用@SpringBootTest集成测试
- 用@SpringBootTest单元测试
- 小结
TL;DR
在 Spring Boot
中做测试,默认使用 @SpringBootTest
注解,今天我们就来快速学习如何进行单元测试或集成测试。
1. @SpringBootTest
运行Sprng Boot 测试,只需要在测试类上指定 @SpringBootTest
,它的类声明如下:
写Spring Boot的测试类时一定要注意:启动类的位置,因为 @SpringBootTest 会优先搜索当前目录及其子目录。
在老的 spring-test 中,我们通常使用@ContextConfiguration(classes=…)
注解来获得测试时的上下文Context信息,而在Spring Boot Test 中都是通过@SpringBootTest来自动完成的。
2. 用@SpringBootTest集成测试
其实,@SpringBootTest 的原理就是模仿由 Spring Boot 框架提供的运行时上下文,比如:
- 根据包结构决定要扫描哪些内容
- 从预定义的位置加载外部配置
- 可选地运行自动配置的启动器等
所以编写的测试类其实很简单,如下代码示例:
@SpringBootTest
public class SpringBootDemoApplicationTests
//---- tests -----
3. 用@SpringBootTest单元测试
3.1. classes 属性
除了加载所有的服务外,我们在很多时候希望能更精准的进行指定服务的测试,这时我们就会用到classes属性,用来指定用于加载 ApplicationContext 里的特定类(注意:需要是实现类,而不是接口类)。
@SpringBootTest(classes = TestManDaoImpl.class,TestManServiceImpl.class)
public class SpringBootDemoApplicationTests
@Resource
private TestManService testManService;
//---- tests -----
3.2. *…Test 相关注解
除了 @SpringBootTest
注解外,Spring Boot 还提供了很多特定注解来帮助我们快速完成测试。
不过,这些注解可能会禁用自动配置,使用时需要仔细阅读说明。
更多详情,参看:Spring Boot Features Testing
4. 结论
到此,我们已经能使用@SpringBootTest注解来对Spring Boot应用编写集成测试或单元测试。
欢迎留言。
以上是关于Spring Boot 2.x 实践记:@SpringBootTest的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 2.x 实践记:@SpringBootTest