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 实践记:Mail

Spring Boot 2.x 实践记:Mail

Spring Boot 2.x 实践记:Mail

Spring Boot 2.x 实践记:@SpringBootTest

Spring Boot 2.x 实践记:@SpringBootTest

Spring Boot 2.x 实践记:@SpringBootTest