Spring Boot从Controller层进行单元测试
单元测试是程序员对代码的自测,一般公司都会严格要求单元测试,这是对自己代码的负责,也是对代码的敬畏。
一般单元测试都是测试Service层,下面我将演示从Controller层进行单元测试。
无参Controller单元测试示例:
package com.pingan.bloan.genesis.controller.base;import org.junit.After; import org.junit.Before; import org.junit.runner.RunWith; import com.pingan.bloan.genesis.logwrapper.LogWrapper; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import com.pingan.bloan.genesis.logwrapper.LogWrapperFactory; import org.springframework.test.context.web.WebAppConfiguration;@RunWith(SpringRunner.class) @SpringBootTest @WebAppConfiguration public class BaseSpringBootTest {protected LogWrapper logger = LogWrapperFactory.getLogWrapper(BaseSpringBootTest.class);@Beforepublic void init() {logger.info("开始测试...");}@Afterpublic void after() {logger.info("测试结束...");} }
package com.pingan.bloan.genesis.controller;import org.junit.Test; import org.junit.Before; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import com.pingan.bloan.genesis.controller.base.BaseSpringBootTest; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;/*** DemoController测试* @author **/ public class DemoControllerTest extends BaseSpringBootTest {@Autowiredprivate DemoController demoController;private MockMvc mockMvc;@Beforepublic void setup() {mockMvc = MockMvcBuilders.standaloneSetup(demoController).build();}@Testpublic void demo() throws Exception {MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/demo/demo")).andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();logger.info(mvcResult.getResponse().getContentAsString());} }
有参Controller单元测试示例一:
package com.pingan.bloan.genesis.controller;import org.junit.Test; import org.junit.Before; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import com.pingan.bloan.genesis.controller.base.BaseSpringBootTest; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;/*** 加解密controller测试* * @author **/ public class MessageEncryptionControllerTest extends BaseSpringBootTest {@Autowiredprivate MessageEncryptionController messageEncryptionController;private MockMvc mockMvc;@Beforepublic void setup() {mockMvc = MockMvcBuilders.standaloneSetup(messageEncryptionController).build();}/*** 加密测试* @throws Exception */@Testpublic void encryption() throws Exception {MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/secret/encryption").accept(MediaType.APPLICATION_JSON).param("originContent", "15221365094")).andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();logger.info(mvcResult.getResponse().getContentAsString());}/*** 解密测试* @throws Exception */@Testpublic void deciphering() throws Exception {MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/secret/deciphering").accept(MediaType.APPLICATION_JSON).param("secretContent", "4BD6EE1A13593F97E6CEA20A2BA9E6E4")).andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();logger.info(mvcResult.getResponse().getContentAsString());} }
有参Controller单元测试示例二:
package com.pingan.bloan.genesis.controller;import org.junit.Test; import org.junit.Before; import com.alibaba.fastjson.JSONObject; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import com.pingan.bloan.genesis.controller.base.BaseSpringBootTest; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import com.pingan.bloan.genesis.model.mobiletelephone.MobileTelephoneRequest;/*** 客户手机掩码信息加密处理测试* @author **/ public class MobileTelephoneIdempotentControllerTest extends BaseSpringBootTest {@Autowiredprivate MobileTelephoneIdempotentController mobileTelephoneIdempotentController;private MockMvc mockMvc;@Beforepublic void setup() {mockMvc = MockMvcBuilders.standaloneSetup(mobileTelephoneIdempotentController).build();}/*** 保存加密处理的客户信息* @throws Exception */@Testpublic void saveCustomerEncryptionMessage() throws Exception {MobileTelephoneRequest request = new MobileTelephoneRequest();request.setCustomerId("RL20180304000099");request.setMobileTelephone("18883270484");request.setCcfMobileTelephone("13904108866");MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/customerEncryption/save").contentType(MediaType.APPLICATION_JSON).content(JSONObject.toJSONString(request))).andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();logger.info(mvcResult.getResponse().getContentAsString());} }
Suite一次性执行多个单元测试:
package com.pingan.bloan.genesis.controller;import org.junit.runners.Suite; import org.junit.runner.RunWith;/*** 打包测试* 配置测试类,一次性执行所有配置的测试类* @author **/ @RunWith(Suite.class) @Suite.SuiteClasses({MessageEncryptionControllerTest.class, DemoControllerTest.class}) public class SuiteExecuteTests {// 不用写代码,只需要注解即可(在SuiteClasses中配置测试类) }
代码单元测试,让代码更加健壮。
转载于:https://www.cnblogs.com/dushenzi/p/10654864.html
Spring Boot从Controller层进行单元测试相关推荐
- 有啥不同?来看看Spring Boot 基于 JUnit 5 实现单元测试
作者:又语 www.jianshu.com/p/4648fd55830e 本文介绍 Spring Boot 2 基于 JUnit 5 的单元测试实现方案. 目录 简介 JUnit 4 和 JUnit ...
- SpringBoot使用MockMvc对Controller层进行单元测试
Mockito是GitHub上使用最广泛的Mocking框架.它提供简洁的API来测试.Mockito简单易学.可读性强.验证语法简洁. [示例]使用Mockito框架,对Controller层进行单 ...
- 访问指定html页面,Spring boot的Controller类是如何指定HTML页面的
Spring boot的Controller类是指定HTML页面的实现的方法如下: 1.在spring boot中借鉴servlet的方法输出html: @RequestMapping(value=& ...
- java中的controller_详解Spring Boot中Controller用法
Controller Controller是SpringBoot里最基本的组件,他的作用是把用户提交来的请求通过对URL的匹配,分配个不同的接收器,再进行处理,然后向用户返回结果.他的重点就在于如何从 ...
- Spring Boot中DAO层和Service层等理解
Spring Boot中DAO等层的理解 1 DAO层 2 Service层 3 Controller层 4 Entity层 5 View层 6 Utils层 总结 目前在公司实习python算法研究 ...
- 【spring boot】Controller @RequestMapping 数据绑定:接收 Date 类型参数时遇错,将 String 类型的参数转换成 Date 类型
前言 spring boot 2.1.1.RELEASE 遇错 Failed to convert value of type 'java.lang.String' to required type ...
- Spring Boot(十二)单元测试JUnit
一.介绍 JUnit是一款优秀的开源Java单元测试框架,也是目前使用率最高最流行的测试框架,开发工具Eclipse和IDEA对JUnit都有很好的支持,JUnit主要用于白盒测试和回归测试. 白盒测 ...
- spring aop 记录controller层的入参和出参
日志的重要性在项目中不言而喻, 但是对controller层的出入参一个一个的添加, 将是一个比较枯燥的事情, 可以考虑使用aop来记录. spring项目中的全局异常处理有两种模式,其一是实现Han ...
- java如何测controller层_用MockMvc对Spring mvc中的controller层进行单元测试
参考:http://sishuok.com/forum/posts/list/7981.html ; http://www.tuicool.com/articles/6nqeIbm 用下面的这种方 ...
最新文章
- 扫地机器人评测 毛发_会切毛发的机器人?海尔扫地机P70抢先评测
- 星巴克、苹果、谷歌、亚马逊等巨头,为何同时做这件事?
- SpringBoot+Jquery实现前后端数据交互
- [leetcode] 198.打家劫舍
- JBPM工作流(七)——详解流程图
- LeetCode 492. 构造矩形
- 要让玩家买单的facebook中文网
- 2017.3.12 lzy 测试
- 大型分布式架构详解:架构模式+敏捷性+可扩展+案例等
- angular组件图标无法显示的问题
- 职工信息管理系统—C语言工程实践
- 苹果电脑怎样下载爱奇艺
- LabWindows/CVI入门之第二章:GUI开发
- 全面揭露网络交易出现的十大欺诈骗术
- python人民币小写转大写_python人民币小写转大写辅助工具
- 扶桑之伤 作者:长铗
- JAV spi 和扩展方式
- 小米id锁状态查询_揭秘:苹果隐藏ID到底是什么?你可能就被坑了!
- 万字长文:读懂微服务编排利器Zeebe
- 数据结构—1.时间复杂度
热门文章
- 命名空间“System.Web”中不存在类型或命名空间名称“Optimization”解决方法
- java成员修饰词 友好的_Java的类成员访问权限修饰词(以及类访问权限)
- 二叉搜索树 java_二叉查找树之 Java的实现【下】
- 机器人弹古筝图片_古筝维修:40年的牡丹牌古筝,动了个外科手术
- 文本词频统计是字典吗_TF-IDF词频逆文档频次算法
- mysql------事务
- 数据库没有备份---应如何还原丢失的数据
- 2019-04-01
- unity中使用protobuf-net
- 微信小程序开发资料汇总