专题简介
SpringBoot之路专题是一个记录本人在使用Spring和SpringBoot相关技术中所遇到的问题和要解决的问题。每用到一处知识点,就会把这处知识补充到Github一个对应的分支上。会以专题的方式,力争每一篇博客,由浅入深,把每个知识点讲解到实战级别,并且分析Spring源码。整个项目会以一个开发一个博客系统为最终目标,每一个分支都记录着一步一步搭建的过程。与大家分享,代码会同步发布到这里。
阅读本片文章大约需要5分钟
1. 概念
- 什么是单元测试
单元测试,一种基本的软件测试方法。维基百科给出的解释如下:
在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。 程序单元是应用的最小可测试部件。
- 应用于什么场景、解决了什么问题
适用于大型项目,多人开发,有持续集成(CI)的项目。单元测试可以很好的保证项目的稳定性和代码质量。在这里,使用Mock的方式,对相关的api或页面进行单元测试。
2. 实战
- 可运行的代码
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.引入单元测试相关支持类
2.声明MockMvc
3.声明WebApplicationContext
4.初始化MockMvc
5.使用MockMvc进行调用
6.获取Http Status
7.获得ResponseString
8.使用断言进行判断
9.使用断言进行判断 - 运行截图
3. 写在后面
单元测试是一种保障软件质量的非常重要的方法和手段,大家不要因为时间因素等忽略了单元测试。如果想要代码足够健壮,以后少给自己留坑,建议多重视单元测试。甚至建议大家采用TDD的方式进行开发。
最后,欢迎大家在github上点Star,项目有更新后,都会第一时间收到通知。代码在这里