Spring Boot 2.x使用Mockito进行测试
在上一篇,项目基本实现了Spring Boot对Mybatis的整合。这篇文章使用Mockito对项目进行测试。
1、使用postmat测试;
2、编写单元测试类,使用mockito进行测试;
3、使用idea内置工具进行测试
运行AicodeBgmsApplication.java,启动项目后,可以采用如下方式对接口进行测试。
一、使用postman进行测试

如上图所示进行测试,其他接口请自行测试。

二、编写单元测试类进行测试
这里使用Idea辅助我们创建单元测试类
在要测试的类,如:UserInfoController.java类中点击右键,再点击Go To,再点击Test,如下图所示:

或者点击菜单上的Navigate,然后点击Test,选择Create New Test...

然后进入下面界面,如下:

确定要测试的类和包路径,把编写单元测试的方法都选中,然后点击OK。单元测试类即可生成。

编写的测试代码如下:UserInfoControllerTest.java
-
package com.aicode.bgms.controller;
-
-
import org.junit.After;
-
import org.junit.Before;
-
import org.junit.Test;
-
import org.junit.runner.RunWith;
-
import org.springframework.beans.factory.annotation.Autowired;
-
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.request.MockMvcRequestBuilders;
-
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
import org.springframework.transaction.annotation.Transactional;
-
import org.springframework.util.LinkedMultiValueMap;
-
import org.springframework.util.MultiValueMap;
-
import org.springframework.web.context.WebApplicationContext;
-
-
import static org.junit.Assert.*;
-
-
@RunWith(SpringRunner.class)
-
@Transactional
-
@SpringBootTest
-
public class UserInfoControllerTest {
-
-
private MockMvc mockMvc;
-
-
@Autowired
-
private WebApplicationContext wac;
-
-
@Before
-
public void setUp() throws Exception {
-
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
-
}
-
-
@After
-
public void tearDown() throws Exception {
-
}
-
-
@Test
-
public void list() throws Exception {
-
String mvcResult= mockMvc.perform(MockMvcRequestBuilders.get("/list"))
-
.andReturn().getResponse().getContentAsString();
-
System.out.println("Result === "+mvcResult);
-
}
-
-
@Test
-
public void add() throws Exception {
-
final MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
-
params.add("userName", "test2");
-
params.add("password", "pass1234");
-
params.add("age", "12");
-
params.add("email", "test@aicode.com");
-
String mvcResult= mockMvc.perform(MockMvcRequestBuilders.post("/add")
-
.params(params)).andReturn().getResponse().getContentAsString();
-
System.out.println("Result === "+mvcResult);
-
}
-
-
@Test
-
public void get() throws Exception {
-
String mvcResult= mockMvc.perform(MockMvcRequestBuilders.get("/get/1"))
-
.andReturn().getResponse().getContentAsString();
-
System.out.println("Result === "+mvcResult);
-
}
-
-
@Test
-
public void modify() throws Exception {
-
final MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
-
params.add("id", "1");
-
params.add("userName", "test1");
-
params.add("password", "123qwe");
-
params.add("age", "24");
-
params.add("email", "test@aicode.com");
-
String mvcResult= mockMvc.perform(MockMvcRequestBuilders.put("/edit")
-
.params(params)).andReturn().getResponse().getContentAsString();
-
System.out.println("Result === "+mvcResult);
-
}
-
-
@Test
-
public void del() throws Exception {
-
mockMvc.perform(MockMvcRequestBuilders.delete("/del/2"))
-
.andReturn();
-
String mvcResult= mockMvc.perform(MockMvcRequestBuilders.get("/list"))
-
.andReturn().getResponse().getContentAsString();
-
System.out.println("Result === "+mvcResult);
-
}
-
-
}
- @SpringBootTest —— SpringBoot 自 1.4.0 版本开始引入的一个用于测试的注解;
- @RunWith(SpringRunner.class) ——代表运行一个 Spring 容器;
- @Transactional——可以使单元测试进行事务回滚,以保证数据库表中没有因测试造成的垃圾数据,再就是保证单元测试可以反复执行;
- @Before—— 代表在测试启动时候需要提前加载的内容,这里是提前加载 MVC 环境。
执行UserInfoControllerTest.java,然后下面是执行单元测试的结果
关于MockMvc进行单元测试如果不太清楚,可以先百度一下做一下基本了解。

可以点击每个测试方法,查看具体的测试结果

这样,我们使用MockMvc就完成了对Controller层的测试。Service层和Dao层也可以使用MockMvc进行测试,这里就不再进行说明,请读者自行尝试。
三、使用Idea中的工具进行测试
运行AicodeBgmsApplication.java,启动项目。
点击菜单中的Tools——〉Test Restful Web Service,然后在窗口输入参数进行测试。
添加:

点击左侧的绿色右向三角标运行,然后可以看到返回结果。
查询:

点击左侧的绿色右向三角标运行,然后可以看到返回结果。
测试时,请求HTTP method的匹配。
原文地址:https://blog.csdn.net/zhenbie/article/details/84072282
Spring Boot 2.x使用Mockito进行测试的更多相关文章
- Spring Boot项目中使用Mockito
本文首发于个人网站:Spring Boot项目中使用Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试 ...
- Spring Boot -05- 多模块结构项目构建与测试(详细图文教程)IDEA 版
Spring Boot -05- 多模块结构项目构建与测试(详细图文教程)IDEA 版 百度很多博客都不详细,弄了半天才把 Spring Boot 多模块项目构建开发整的差不多,特地重新创建配置,记录 ...
- spring boot使用java读取配置文件,DateSource测试,BomCP测试,AnnotationConfigApplicationContext的DataSource注入
一.配置注解读取配置文件 (1)@PropertySource可以指定读取的配置文件,通过@Value注解获取值 实例: @PropertySource(val ...
- Spring Boot教程(十)异步方法测试
测试 测试代码如下: @Component public class AppRunner implements CommandLineRunner { private static final Log ...
- Spring Boot应用的测试——Mockito
Spring Boot应用的测试——Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试:Spring ...
- Spring Boot 1.4测试的改进
对Pivotal团队来说,工作上的好事情是他们拥有一个被叫做Pivotal Labs的灵活发展部门,拥有Labs团队的Lean 和 XP程序设计方法学的强大支持,例如结对编程和测试驱动开发.他们对于测 ...
- spring boot test中mockito的运用
mock的意义 在微服务盛行的当下,开发过程中往往出现A应用中某功能的实现需要调用B应用的接口,无论使用RPC还是restful都需要B应用提供接口的实现整个开发工作才能继续进行.从而导致A应用的开发 ...
- 在Spring Boot项目中使用Spock测试框架
本文首发于个人网站:在Spring Boot项目中使用Spock测试框架 Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring Boot项目 ...
- Spring Boot 解决方案 - JUnit 测试
简单的 JUnit 项目 回顾一下创建并运行简单的 JUnit 测试项目,先添加 JUnit 依赖然后编写类似如下模板的测试类,使用 IDE 的话直接用插件运行就行, 使用 Maven 的话运行命令 ...
随机推荐
- WCF ChannelFactory
public static class WcfExtensions{ public static void Using<T>(this T client, Action<T&g ...
- 编程语言分类及python所属类型
编程语言分类及python所属类型 编程语言主要从以下几个角度为进行分类:编译型和解释型.静态语言和动态语言.强类型定义语言和弱类型定义语言. 编译和解释的区别是什么? 编译器是把源程序的每一条语句都 ...
- 【JZOJ4786】【NOIP2016提高A组模拟9.17】小a的强迫症
题目描述 输入 输出 样例输入 3 2 2 1 样例输出 3 数据范围 样例解释 解法 先假定每种颜色的珠子取一个按顺序排列. 设这n个珠子就是每一种颜色的珠子的最后一个. 考虑逐个把珠子放入. 对于 ...
- 网络流24题 负载平衡(DCOJ8013)
题目描述 G 公司有 n nn 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n nn 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入格式 文件 ...
- Sublime text 3 如何格式化HTML/css/js代码
Sublime Text 3 安装Package Control 原来Subl3安装Package Control很麻烦,现在简单的方法来了 一.简单的安装方法 使用Ctrl+`快捷键或者通过Vi ...
- Ecplise中Junit4单元测试的基本用法
看了一些Junit4的视频,简单了解了Junit4的一些基本用法,整理记录一下. 环境搭建 这里使用的开发工具是MyEclipse,首先新建一个Java工程,将Junit4的jar包引入,eclips ...
- [CS]C#操作word 2016-04-17 18:30 1506人阅读 评论(35) 收藏
最近在做的项目已经改了好几版,最近这一版用到了word,当然不是直接使用word,而是使用第三方的ActiveX控件:dsoframer.ocx,此控件的使用和其他控件的使用流程没有任何区别,接下来介 ...
- 利用IDEA构建springboot应用-数据库操作(Mysql)
Spring-Date-Jpa 定义了一系列对象持久化的标准 例如Hibernate,TopLink等 spring data jpa让我们解脱了DAO层的操作,基本上所有CRUD都可以依赖于它来 ...
- hdu 1025 lis 注意细节!!!【dp】
感觉这道题浪费了我半个小时的生命......哇靠!原来输出里面当len=1时是road否则是roads!!! 其实做过hdu 1950就会发现这俩其实一样,就是求最长上升子序列.我用结构体记录要连线的 ...
- HZOJ 赤(CF739E Gosha is hunting)
本来没有打算写题解的,时间有点紧.但是这个wqs二分看了好久才明白还是写点东西吧. 题解就直接粘dg的了: 赤(red) 本题来自codeforces 739E,加大了数据范围. 首先对一只猫不会扔两 ...