Get请求url不超过4000字节
Rest成熟度:level 0:使用http作为传输方式,leve 1:引入资源概念,每个资源有对应的url,level 2:使用http方法进行不同操作,使用http状态码表示不同结果,level 3:使用超媒体,在资源表达式中包含链接信息,一般做到level 2
测试依赖:org.springframework.boot:spring-boot-starter-test
测试类:
package com.example.security;
import org.junit.Before;
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.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
@RunWith(SpringRunner.class) //使用SpringRunner运行
@SpringBootTest //表明这是一个测试用例
public class SecurityApplicationTests {
@Autowired
private WebApplicationContext wac; //注入web环境,但是并不会启动Tomcat,所以很快
private MockMvc mockMvc; //模拟web环境
@Before //@Before会在每个@Test之前执行,在里面初始化模拟的web环境
public void setup() {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
}
Rest请求单元测试举例(推荐先写好测试用例,执行,失败红色,然后去写Rest api,过程中不断执行测试用例,直到测试用例通过):
@Test
public void queryUsersOK() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/users")
.contentType(MediaType.APPLICATION_JSON_UTF8))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.length()").value(2));
}
该测试用例向/users发送get请求,contentType为application/json;charset=UTF-8,期望响应状态码200,期望响应json字符串数组长度为2。其中jsonPath是用来解析响应的json。请求格式错误会报400。请求的method不匹配会报405。
这里的$代表返回的json文档,具体可在github搜索jsonPath第一个项目json-path/JsonPath即可,具体使用参考, size=10, sort = "username, asc") Pageable page) {
page.getPageNumber();
page.getPageSize();
page.getSort();
return new ArrayList<>();
}
\",\"date\":" + System.currentTimeMillis()+ "}";
String result = mockMvc.perform(post("/user").contentType(MediaType.APPLICATION_JSON_UTF8).content(content)) //put与post的测试用例写法相同,只是把post改成put,url改成如/usr/1
.andExpect(status().isOk()).andExpect(jsonPath("$.id").value("1"))
.andReturn().getResponse().getContentAsString();
System.out.println(result); //时间属性,向后台传参是System.currentTImeMillis();,返回的是2019-08-24T04:06:49.154+0000
}
如果参数对象有Date属性,可以用yyyy-MM-dd或yyyy-MM-dd HH:mm:ss等时间格式字符串转换,但是需要转换且需要适配不同的展示格式,因此直接在json中传递时间戳(毫秒值)更方便,入库存时间戳,前台展示什么样式由js控制。前台时间戳和后台Date类型能够自由转换(经测试,从浏览器url传的date=时间戳转换失败)。
删除单元测试(请求方法使用多了,直接引用*即可):
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
@Test
public void deleteUser() throws Exception {
mockMvc.perform(delete("/user/1").contentType(MediaType.APPLICATION_JSON_UTF8)).andExpect(status().isOk());
}
- .Net Core ----通过XUnit进行接口单元测试(带请求头及参数)并用output输出结果
最近在做core的接口单元测试,所以在这拿出来分享一下,添加XUnit的nuget包 话不多说,直接上代码了: 输出结果(需要的命名空间using Xunit.Abstractions;): ITes ...
- .ashx接口单元测试
最近项目中需要修改一个文件上传的.ashx处理,代码的大概形式是这样的: public void ProcessRequest(HttpContext context) { CallA(context ...
- 安卓端后台登录接口单元测试demo
package com.js.ai.modules.pointwall.interfac; import java.io.IOException; import java.io.Unsupported ...
- 一起买beta版模块单元测试
一起买beta版模块接口单元测试 测试目的 保证代码质量,对各个模块进行单元测试,不仅可以有效地保证代码的可靠性,让模块在与别的模块整合时出现更少的错误. 而且不用每次启动程序而等待浪费时间. 单元描 ...
- 基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 目录 1. 开发环境2. 主要功能逻辑介绍3. 框架功能简介 4. 数据库的创建 5. 框架模块详细介绍6. Tes ...
- 8点了解Java服务端单元测试
一. 前言 单元测试并不只是为了验证你当前所写的代码是否存在问题,更为重要的是它可以很大程度的保障日后因业务变更.修复Bug或重构等引起的代码变更而导致(或新增)的风险. 同时将单元测试提前到编写正式 ...
- Mock测试你的Spring MVC接口
1. 前言 在Java开发中接触的开发者大多数不太注重对接口的测试,结果在联调对接中出现各种问题.也有的使用Postman等工具进行测试,虽然在使用上没有什么问题,如果接口增加了权限测试起来就比较恶心 ...
- Adaptive Code Via C#读书笔记
原书链接: http://www.amazon.com/Adaptive-Code-via-principles-Developer-ebook/dp/B00OCLLYTY/ref=dp_kinw_s ...
- Spring+MVC+Mybatis整合
本文是对慕课网上"搞定SSM开发"路径的系列课程的总结,详细的项目文档和课程总结放在github上了.点击查看 什么是秒杀业务 网站售卖某产品时,规定在某个日期开始售卖限量的产品, ...
随机推荐
- let,const
- 让webstorm支持ES6语法:file-setting-languages&frameworks-javascript-右侧选择ES6 - let定义变量没有预解释且不能重复定义,在定 ...
- 刚新建好的动态网站项目,创建jsp页面就报错??
拿到刚刚可以运行的Eclipse,就马上想敲码了,但一创建项目之后再创建jsp页面就报错= =! 报错的内容大概为缺乏对应的jar包. 我们常用Tomcat为中间体,而他本身是带有开发jsp网站的对应 ...
- Linux就该这么学04学习笔记
今天开始学习,开始做笔记,希望自己能坚持下去 参考链接:https://www.linuxprobe.com/chapter-04.html vim编辑器 Linux系统中通用的文本编辑器 vi的升级 ...
- Linux性能优化从入门到实战:05 CPU篇:硬中断、软中断
软中断(softirq)会导致CPU 使用率升高 中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求.中断其实是一种异步的事件 ...
- LNMP集群架构篇
一.LNMP介绍 1.使前端web服务和后端存储服务进行串联 2.主要实现处理php动态请求 工作原理: L:linux N:nginx M:mysql P:php 二.lnmp部署 我的环境 ...
- UNIX网络编程总结三
套接口结构 IPv4套接口地址结构: 1 2 3 4 5 6 7 struct sockaddr_in{/*16字节*/ uint8_t sin_len; /*结构体长度,8位*/ sa_famil ...
- paste 合并文件
1.命令功能 paste 用于合并文件的列,把每个文件以列对列的方式,一列列地加以合并. 2.语法格式 paste option file 参数选项 参数 参数说明 -d 指定间隔符合并文件(默 ...
- 线程工具类 - CountDownLatch(倒计时器)
CountDownLatch官方文档 一.原理 CountDownLatch是一个非常实用的多线程控制工具类.Count Down在英文中意为倒计时,Latch意为门闩,可以简单的将CountDown ...
- web项目分层设计
model.dao.service.controller之间的关系,还有util和task的简介 model: 与数据库中的表一一对应,实现set和get的方法.
- [BZOJ] 最长距离
问题描述 windy 有一块矩形土地,被分为 NM 块 11 的小格子. 有的格子含有障碍物.如果从格子 A 可以走到格子 B,那么两个格子的距离就为两个格子中心的欧几里德距离.如果从格子 A 不可以 ...