Spring Boot之路[5]--基础单元测试

专题简介

SpringBoot之路专题是一个记录本人在使用Spring和SpringBoot相关技术中所遇到的问题和要解决的问题。每用到一处知识点,就会把这处知识补充到Github一个对应的分支上。会以专题的方式,力争每一篇博客,由浅入深,把每个知识点讲解到实战级别,并且分析Spring源码。整个项目会以一个开发一个博客系统为最终目标,每一个分支都记录着一步一步搭建的过程。与大家分享,代码会同步发布到这里

阅读本片文章大约需要5分钟

1. 概念

  1. 什么是单元测试
    单元测试,一种基本的软件测试方法。维基百科给出的解释如下:

在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。 程序单元是应用的最小可测试部件。

  1. 应用于什么场景、解决了什么问题
    适用于大型项目,多人开发,有持续集成(CI)的项目。单元测试可以很好的保证项目的稳定性和代码质量。在这里,使用Mock的方式,对相关的api或页面进行单元测试。

2. 实战

  1. 可运行的代码
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
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.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
@SpringBootApplication
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)// 1
public class IndexControllerTest {

    private MockMvc mockMvc;// 2

    @Autowired
    private WebApplicationContext webApplicationContext; // 3

    @Before
    public void before() {
        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); // 4
    }

    @Test
    public void testIndex() throws Exception {
        MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/")).andReturn(); // 5

        int status = mvcResult.getResponse().getStatus(); // 6
        String responseString = mvcResult.getResponse().getContentAsString(); // 7

        Assert.assertEquals("return status not equals 200", 200, status); // 8
        Assert.assertEquals("response string not equalse ", "Hello Spring boot", responseString); // 9
    }
}
  1. 代码串讲
    1.引入单元测试相关支持类
    2.声明MockMvc
    3.声明WebApplicationContext
    4.初始化MockMvc
    5.使用MockMvc进行调用
    6.获取Http Status
    7.获得ResponseString
    8.使用断言进行判断
    9.使用断言进行判断
  2. 运行截图
运行截图,红框中为运行结果

3. 写在后面

单元测试是一种保障软件质量的非常重要的方法和手段,大家不要因为时间因素等忽略了单元测试。如果想要代码足够健壮,以后少给自己留坑,建议多重视单元测试。甚至建议大家采用TDD的方式进行开发。

最后,欢迎大家在github上点Star,项目有更新后,都会第一时间收到通知。代码在这里

推荐阅读更多精彩内容