当前位置: 首页 > news >正文

《高性能网站建设指南广州网站推广联盟

《高性能网站建设指南,广州网站推广联盟,太原网络营销策划,bbs网站建设前言 最近有小伙伴问到怎么给 controller的接口写单元测试。 单元测试是开发必不可少的一个环节。 既然有人问到了,那我觉得可能不止一个人不会,那就按照惯例,出手。 正文 内容: 主要是get 和 post 两种请求方式的接口 的 单元测…

前言


最近有小伙伴问到怎么给 controller的接口写单元测试。

 

单元测试是开发必不可少的一个环节。

既然有人问到了,那我觉得可能不止一个人不会,那就按照惯例,出手。

 

正文


内容:

主要是get 和 post 两种请求方式的接口 的 单元测试写法。

get方式请求   介绍 3种传参:


①@PathVariable
②@RequestParam("id")
③类传参 如 User user

post方式请求  介绍 1种传参:
@RequestBody

@RequestHeader请求头参数添加参数


上代码 :


先看GET方式请求,简单写三个示例接口

    @GetMapping("/getId/{id}")public String pathVariableTest(@PathVariable Integer id) {return  "id:   "+id;}@GetMapping("/getId")public String requestParamTest( @RequestParam("id") Integer id) {return  "id:   "+id;}@GetMapping("/getUser")public String requestParamObjectTest( User user) {return  user.toString();}

然后我们来针对这三个get请求接口写单元测试

pom.xml 加入测试使用的jar依赖

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>

创建一个单元测试类 MyControllerTest.java

 代码:

import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class MyControllerTest {protected Logger logger = LoggerFactory.getLogger(MyControllerTest.class);
}

 写下来开始写 针对controller 的 单元测试代码:

 代码:

    @AutowiredDoTestController doTestController;private MockMvc mockMvc;@Beforepublic void setup() {mockMvc = MockMvcBuilders.standaloneSetup(doTestController).build();}

 

首先针对这种场景的GET请求,传入参数的,我们怎么写单测?

 @RequestParam("id")


 代码: 

    @Testpublic void getTest() throws Exception {MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/getId").param("id", "123")).andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();logger.info("调用返回的结果:{}", mvcResult.getResponse().getContentAsString());}

ps: 多个  @RequestParam  就同样 一直 .param即可

示例:

 当然也可以通过map传值,传多个:

 

 跑一下单测看看效果:

 

然后是@PathVariable 传参方式:

 单测写法:

 代码:

    @Testpublic void pathVariableTest() throws Exception {Integer id = 888;MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/getId/" + id)).andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();logger.info("调用返回的结果:{}", mvcResult.getResponse().getContentAsString());}

 

然后是传类的情景:

  单测写法:

代码:
 

    @Testpublic void getTestObject() throws Exception {MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/getUser").param("userId", "123").param("name", "JCccc").param("age", "18").param("userCode", "100244").contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE)).andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();logger.info("调用返回的结果:{}", mvcResult.getResponse().getContentAsString());}

然后看下POST 请求方式的接口 单测写法

 

顺便把请求头参数方式一并写了:

 代码:
 

    @Testpublic void postTest() throws Exception {User user = new User();user.setUserId(100011L);user.setName("JCccc");user.setUserCode("100244");user.setAge(18);String strJson = JSON.toJSONString(user);MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/getRequestBodyValue").header("token", "收藏点赞").accept(MediaType.parseMediaType("application/json;charset=UTF-8")).contentType(MediaType.APPLICATION_JSON).content(strJson)).andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();logger.info("调用返回的结果:{}", mvcResult.getResponse().getContentAsString());}

效果:

 

http://www.tj-hxxt.cn/news/86837.html

相关文章:

  • 外面网站怎么做的刷神马网站优化排名
  • 简单的商城的网页设计作业网站关键词优化建议
  • tp框架做网站的优点今日国内热点新闻头条事件
  • 网页设计与制作教程 刘瑞新优化师助理
  • 做自己的卡通人物的网站seo算法入门教程
  • 怎样申请免费的网站空间做seo网页价格
  • 建站宝盒nicebox下载无锡seo网站排名
  • 模版网站怎么做常用的网络推广方式有哪些
  • 做一个网站的流程seo网络营销推广
  • 网站首页图片滑动怎么做网络推广培训班
  • 17网站一起做网店2018外贸seo公司
  • 网站模板的功能微博推广方法有哪些
  • 重庆城乡住房建设厅网站专业推广引流团队
  • 网站销售怎么推广网络技术推广服务
  • 郑州app外包开发公司优化防疫措施
  • wordpress来建站线上推广渠道有哪些方式
  • 帮朋友免费做网站千万不要做手游推广员
  • 嘉定网站建设电子技术培训机构
  • 网站上那些轮播图视频怎么做的建站系统
  • 网站开发话题3天网站seo优化成为超级品牌
  • 个人做网站 私活网页制作平台有哪些
  • 做网站开发需要学什么软件软文营销的作用
  • 杭州平面设计公司内蒙古seo优化
  • 广安专业网站建设报价网上的推广公司
  • 网站建设的三大原则推广赚钱的平台有哪些
  • 打开网站微信营销的模式有哪些
  • wordpress建站落后吗广告策划方案怎么做
  • 创一家网站优化设计四年级上册数学答案
  • 章丘做网站单位哪家好新东方在线教育平台官网
  • 婚纱摄影网站报价竞价推广培训课程