spring boot里面对WEB API的单元测试

栏目: 编程工具 · 发布时间: 7年前

内容简介:版权声明:本文为博主原屙文章,喜欢你就担走。 https://blog.csdn.net/leftfist/article/details/88876933

版权声明:本文为博主原屙文章,喜欢你就担走。 https://blog.csdn.net/leftfist/article/details/88876933

如前一篇文章( 《spring boot web api》 )所述,spring boot项目里提供web api非常方便。而作为开发人员,自己写的api,首先要自己先测试一轮,通过才能给其他人调用。API就是用来调用的,所以沟通、测试显得特别重要。

程序员测试,当然是单元测试了。下面是一个完整的单元测试代码。待测试的API是POST访问方式的api,有两个:一个提交参数格式为json,一个为键值对。

import api.entity.Author;
import api.entity.EnumSex;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
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.http.MediaType;
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.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;

@RunWith(SpringRunner.class)
@SpringBootTest
public class MyTest {
    @Autowired
    private WebApplicationContext wac;

    private MockMvc mockMvc;
    @Before
    public void setUp() {
        mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
    }

    @After
    public void after() throws Exception {
        mockMvc = null;
    }

    @Test
    public void testJson() throws Exception {//测试提交参数为JSON格式
        Author req = new Author();//Author是自定义的类
        req.setName("chenqu");
        req.setDesc("foolish");
        req.setSex(EnumSex.Male);
        ObjectMapper mapper = new ObjectMapper();
        ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
        java.lang.String requestJson = ow.writeValueAsString(req);
        mockMvc.perform(MockMvcRequestBuilders.post("/api/authors/json/1?t=108")
                .contentType(MediaType.APPLICATION_JSON).content(requestJson))
                .andDo(print())
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andReturn().getResponse().getContentAsString();

        System.out.println("ok!!!");
    }

    @Test
    public void testKv() throws Exception {//测试提交参数为键值对格式
        Author req = new Author();
        req.setName("chenqu");
        req.setDesc("foolish");
        req.setSex(EnumSex.Male);
        ObjectMapper mapper = new ObjectMapper();
        ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
        java.lang.String requestJson = ow.writeValueAsString(req);
        mockMvc.perform(MockMvcRequestBuilders.post("/api/authors/kv/1?t=108")
                .contentType(MediaType.APPLICATION_FORM_URLENCODED).content(requestJson))
                .andDo(print())
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andReturn().getResponse().getContentAsString();

        System.out.println("ok!!!");
    }
}

附API:

@RestController
@RequestMapping(value="/api")
public class ApiController {

	//提交的参数为json
    @RequestMapping(value = "/authors/json/{id}", method = RequestMethod.POST)
    public String test(@PathVariable int id, @RequestParam("t") int type,@RequestBody Author auth){
        return String.format("id:%1$d,type:%2$d,name:%3$s;params type:json",id,type,auth.getName());
    }

	//提交的参数为键值对
    @RequestMapping(value = "/authors/kv/{id}", method = RequestMethod.POST)
    public String test2(@PathVariable int id, @RequestParam("t") int type,Author auth){
        return String.format("id:%1$d,type:%2$d,name:%3$s;params type:key-value",id,type,auth.getName());
    }
	
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

图解TCP/IP : 第5版

图解TCP/IP : 第5版

[日]竹下隆史、[日]村山公保、[日]荒井透、[日]苅田幸雄 / 乌尼日其其格 / 人民邮电出版社 / 2013-7-1 / 69.00元

这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握TCP/IP的基本技能。 书中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,引导读者了解和掌握TCP/IP,营造一个安全的、使用放心的网络环境。 本书适合计算机网络的开发、管理人员阅读,也可作为大专院校相关专业的教学参考......一起来看看 《图解TCP/IP : 第5版》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具