软件开发架构师

Spring Boot 2.X 如何快速集成单元测试?

java 208 2020-05-19 10:16

本文将详细介绍下使用Spring Boot 2.X 集成单元测试,对API(Controller)测试的过程。

一、实现原理

使用MockMvc发起请求,然后执行API中相应的代码,在执行的过程中使mock模拟底层数据的返回,最后结果验证。

二、常用注解介绍

@SpringBootTest是SpringBoot的一个用于测试的注解,通过SpringApplication在测试中创建ApplicationContext。

@AutoConfigureMockMvc是用于自动配置MockMvc。

@RunWith在JUnit中有很多个Runner,他们负责调用你的测试代码,每一个Runner都有各自的特殊功能,你要根据需要选择不同的Runner来运行你的测试代码。

@Before在每个测试方法前执行,一般用来初始化方法。

@After在每个测试方法后执行,在方法执行完成后要做的事情。

三、主要代码

  1. 引入测试jar包
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
  1. 测试类中添加注解和测试代码
package com.example.helloSpringBoot;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {HelloSpringBootApplication.class})
@AutoConfigureMockMvc  //测试接口用
public class HelloControllerTest {

    private static final Logger log = LoggerFactory.getLogger(HelloControllerTest.class);

    @Before
    public void testBefore(){
        log.info("测试前");
    }

    @After
    public void testAfter(){
        log.info("测试后");
    }

    @Autowired
    private MockMvc mockMvc;

    /**
     *  测试 /mockTest
     *
     *
     */
    @Test
    public void mockTest()throws Exception{
        MvcResult mvcResult=mockMvc.perform(MockMvcRequestBuilders.get("/mockTest")).
                andExpect(MockMvcResultMatchers.status().isOk()).andReturn();
        int status=mvcResult.getResponse().getStatus();
        //打印出状态码,200就是成功
        log.info("状态码="+status);
        Assert.assertEquals(200,status);
    }

}
  1. 运行mockTest

运行成功后截图如下:

 

<a id=Spring Boot 2.X 如何快速集成单元测试?-1" alt="">

 

上述三步操作完成后即可实现对API(Controller)测试,有问题欢迎留言沟通哦!

完整源码地址:https://github.com/suisui2019/helloSpringBoot

推荐阅读

1.Spring Boot入门-快速搭建web项目
2.Spring Boot 2.X 整合Redis
3.Spring Boot 2.X 如何优雅的解决跨域问题?
4.Spring Boot 2.X 如何添加拦截器?
5.Spring Boot 2.X 集成spring session实现session共享
6.Redis Cluster搭建高可用Redis服务器集群
7.为什么单线程的Redis这么快?
8.一篇文章搞定SpringMVC参数绑定
9.SpringMVC+Mybatis 如何配置多个数据源并切换?

 

限时领取免费Java相关资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术。

资料传送门:  https://mp.weixin.qq.com/s/u2b_NVNuMuAPE0w4lc45fw

关注下方公众号即可免费领取:

<a id=Spring Boot 2.X 如何快速集成单元测试?-2" alt="Java碎碎念公众号" width="258" height="258">

 

文章评论