首页 > 其他分享 >使用MockMvc测试 Controller

使用MockMvc测试 Controller

时间:2023-06-15 22:44:39浏览次数:48  
标签:mockMvc import springframework Controller 测试 org test MockMvc throws

使用MockMvc可以做到controller层的测试。如果直接得到controller,然后调用指定的方法是不会通过拦截器等外层组件的,使用mockMvc可以。

package com.lomi.mockMvc;

import cn.hutool.json.JSONUtil;
import com.lomi.controller.TestController;
import com.lomi.entity.Goods;
import com.lomi.service.GoodsService;
import lombok.extern.slf4j.Slf4j;
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.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import java.sql.SQLOutput;

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Slf4j
public class MockMvcTest {

    // 自己写的controller
    @Autowired
    private TestController testController;



    private MockMvc mockMvc;

    @Before
    public void setup() {
        //初始化mockMvc
        mockMvc = MockMvcBuilders.standaloneSetup(testController).build();
    }


    /**
     * get
     *
     * @throws Exception
     */
    @Test
    public void t1() throws Exception {
        MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders
                        .get("/test/test3")
                )
                //期望的响应状态200
                .andExpect(MockMvcResultMatchers.status().isOk())
                //打印请求过程
                .andDo(MockMvcResultHandlers.print())
                //返回结果
                .andReturn();

        
        log.warn("响应参数:{}",mvcResult.getResponse().getContentAsString());
    }


    /**
     * get带参数
     *
     * @throws Exception
     */
    @Test
    public void t2() throws Exception {
        MvcResult mvcResult = mockMvc.perform(
                MockMvcRequestBuilders.get("/test/test2").param("name","张三")
        ).andExpect(MockMvcResultMatchers.status().isOk())
        .andDo(MockMvcResultHandlers.print())
        .andReturn();

        log.warn("响应参数:{}",mvcResult.getResponse().getContentAsString());
    }


    /**
     * post,json请求带参数,返回json
     *
     * @throws Exception
     */
    @Test
    public void t3() throws Exception {
        Goods goods = Goods.randomGoods();

        MvcResult mvcResult = mockMvc.perform(
                MockMvcRequestBuilders.post("/test/test3").contentType(MediaType.APPLICATION_JSON_VALUE).content(JSONUtil.toJsonStr( goods )).header(HttpHeaders.ACCEPT,"application/json")
        ).andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();

        log.warn("响应参数:{}",mvcResult.getResponse().getContentAsString());
    }

    /**
     * post,json请求带参数,返回xml
     *
     * @throws Exception
     */
    @Test
    public void t4() throws Exception {
        Goods goods = Goods.randomGoods();

        MvcResult mvcResult = mockMvc.perform(
                MockMvcRequestBuilders.post("/test/test3").contentType(MediaType.APPLICATION_JSON_VALUE).content(JSONUtil.toJsonStr( goods ))
        ).andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();

        log.warn("响应参数:{}",mvcResult.getResponse().getContentAsString());
    }




}

标签:mockMvc,import,springframework,Controller,测试,org,test,MockMvc,throws
From: https://www.cnblogs.com/cxygg/p/17484319.html

相关文章

  • Windows平台下Git服务器gitblit的搭建及git push登陆测试
    1、安装java环境下载安装java注意(java的版本需要在1.7及以上),下载地址:http://www.java.com/zh_CN/安装步骤这里不再赘述配置java的环境变量PATH CLASS PATH 使用 java-version检查是否安装成功。 2、安装gitblit,就是git服务器下载Gitblit。下载地址:http://ww......
  • 轻松掌握Python+主流测试框架Requests接口自动化,快速转型自动化测试
    轻松掌握Python+主流测试框架Requests接口自动化,快速转型自动化测试最近几年,自动化测试已经成为了软件测试的主流趋势,而Python语言和Requests库作为主流测试框架,也成为了越来越多测试工程师的首选。使用Python+Requests接口自动化进行测试,不仅可以提高测试效率和覆盖面,还可以降低......
  • 软件测试从小白进阶高手-Python自动化+Jmeter性能+App项目+接口测试
    软件测试从小白进阶高手-Python自动化+Jmeter性能+App项目+接口测试软件测试技能,包括Python自动化、Jmeter性能测试、App项目测试、接口测试。接下来,我将从每个技能点给出一些更详细的介绍。1.Python自动化测试Python已经成为测试人员的新宠,Python自动化测试的原因在于Python......
  • 项目说明 | 网页计算器自动化测试项目
    需求:1、对网页计算器,进行加法的测试操作。通过读取数据文件中的数据来执行用例。2、网址:http://cal.apple886.com/测试点:1、加法:1+1=22+9!=10...2、减法:3-1=25-3!=8...3、乘法:2*3=65*7!=2...4、除法:8/2=49/3!=2...技术:1、使用openpyxl读取e......
  • 软件测试|SQL分类大概有几种?SQL中什么是主键和外键,它们之间的区别是什么?
    前言之前一个朋友面试测试开发岗位,面试官问了这个问题,朋友觉得自己没有很好回答这个问题,面试结束之后找到我,我只能帮他总结成这样了,希望能够帮助到那位朋友。获取更多技术资料,请点击!SQL语言分为五大类:DDL(数据定义语言)-Create、Alter、Drop这些语句自动提交,无需用Commit......
  • 软件测试|数据分析神器pandas教程(三)
    前言前面我们介绍了pandasSeries数据结构,本篇文章我们来介绍另外一种pandas数据结构——DataFrame。获取更多技术资料,请点击!DataFrameDataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可......
  • 直流充电机测试系统TK4850B非车载充电机检定装置
    直流充电机测试系统TK4850B通过将直流非车载充电机枪头插至检定装置枪座上,检定装置枪头插至新能源汽车上开始充电,无线平板控制电能比较仪实时进行电能计量。无线平板可控制检定装置自动完成检定项目,检定数据可本地存储,也可通过4G远程传输至智慧计量实验室。以新能源车为负载进行......
  • 软件测试|数据分析神器pandas教程(一)
    前言Python是非常适合用于数据分析的,除了Python代码简单以外,Python还有非常多的第三方库,对于数据分析有很大帮助,今天我们就介绍一下Python进行数据分析的神器——pandas。获取更多技术资料,请点击!安装从2019年1月1号开始,新发布的pandas将只支持Python3版本,所以我们的教程也以p......
  • 充电桩测试机TK4800充电机(桩)现场校验仪检定装置
    高准确度测量:装置静态电能计量准确度达到0.01级,动态电能计量准确度达到0.02级。宽量程:直流输出100V~1150V,0.1A~300A,交流输出220V±20%,10mA~80A。ms级电能刷新:直流电能累积寄存器更新速率达10ms/次,交流电能累积寄存器更新速率达20ms/次,提高动态波形下累积电能的测量精度。......
  • 软件测试|教你用matplotlib绘制热力图
    前言热力图,是一种通过对色块着色来显示数据的统计图表。绘图时,需指定颜色映射的规则。例如,较大的值由较深的颜色表示,较小的值由较浅的颜色表示;较大的值由偏暖的颜色表示,较小的值由较冷的颜色表示,等等。当然,只要我们提供数据,Python就能够绘制出热力图。下面我们就来介绍一下如何......