Spring Boot 2.X 如何快速集成单元测试?
本文将详细介绍下使用Spring Boot 2.X 集成单元测试,对API(Controller)测试的过程。
一、实现原理
使用MockMvc发起请求,然后执行API中相应的代码,在执行的过程中使mock模拟底层数据的返回,最后结果验证。
二、常用注解介绍
@SpringBootTest是SpringBoot的一个用于测试的注解,通过SpringApplication在测试中创建ApplicationContext。
@AutoConfigureMockMvc是用于自动配置MockMvc。
@RunWith在JUnit中有很多个Runner,他们负责调用你的测试代码,每一个Runner都有各自的特殊功能,你要根据需要选择不同的Runner来运行你的测试代码。
@Before在每个测试方法前执行,一般用来初始化方法。
@After在每个测试方法后执行,在方法执行完成后要做的事情。
三、主要代码
- 引入测试jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
- 测试类中添加注解和测试代码
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);
} }
- 运行mockTest
运行成功后截图如下:
上述三步操作完成后即可实现对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
关注下方公众号即可免费领取:
最新文章
- ansible 初探nginx安装
- (转)Shell函数
- 可视化工具solo show-----Prefuse自带例子GraphView讲解
- usb驱动开发18之设备生命线
- 连通图模板(HDU 1269)
- poj 1611 The Suspects 解题报告
- java基础回顾(五)——Stack、Heap
- IOS中bounds和frame
- Python批量读取人脸图片与数据互相转换
- 【数学】HDU 5753 Permutation Bo
- Hbase 计数器
- java学习笔记2——Eclipse的安装及汉化图解
- Spring MVC新手教程(二)
- javascript中filter的用法
- PHP技能树
- Windows与Linux的命令行命令对比
- Tomcat中acceptCount,maxConnections、maxThreads的含义及关系
- matlab中的reshape快速理解,卷积和乘积之间的转换
- Linux系统一本通(实用篇)
- if 循环的深入理解 哈希表的一种应用
热门文章
- SVN服务器搭建--Subversio与TortoiseSVN的配置安装(Windows)
- 原生javascript写自己的运动库(匀速运动篇)
- IBM x3850 RAID5数据恢复过程
- 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用FairyGUI (二)
- flock SUSE/RHEL
- Java中的queue和deque对比详解
- 【java错误】Non-terminating decimal expansion; no exact representable decimal result
- java 23种设计模式教程
- (WCF初体验)WCF的认证和消息保护
- ucloud mysql