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 用下面的这种方 ...
最新文章
- EntityFramework6.X 之 Fulent
- java menu字体_Java开发网 - 请问如何让菜单字体变宋体?
- pdf形式是什么意思
- 使用嵌套类/临时类保存数据
- 一套键鼠控制多台电脑的使用方法,快收藏
- java正则判断11位手机号码_java-正则表达式判断手机号
- 阿里云域名绑定IP手把手教学
- elasticsearch中forcemerge清除文件占用的磁盘空间
- 将<span>标签设为圆形
- Android系统的system/app和system/priv-app
- MAC OSX stdio.h或iostream等头文件无法找到的解决办法
- poi操作word文档总结
- 教你如何轻松解密Md5密码
- lna的噪声参数以及功率传输S11 S22
- 利用iframe跨域请求
- 新品周刊 | 内马尔携手极度干燥推出内衣系列;安踏儿童与中国航天推出热返科技羽绒服...
- ROC 曲线介绍以及 python 画法
- IIoT可预测运维报告摘要
- 【电脑端】腾讯视频PC端微信截图扫码失败解决办法
- Popcap Framework 一个游戏框架(c++)
热门文章
- leetcode解题报告:Interleaving String
- Java 使用 Dom4j 解析 XML 指南
- listview中getview异步加载网络图片
- python 制作动画片_cocos2d from python Animation 动画片的实现
- iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9443 -j DNAT
- linux的O的字体让我满意那些
- mysql-------流程控制结构
- android SQLite常用数据类型
- 30个超实用Python代码片段
- 10大Go语言开源项目推荐