用SpringBoot单元测试如何模拟发送HTTP请求

文章目录

    • 首先导入Springboot-test包
    • 编写测试用例
    • JSONPATH

首先导入Springboot-test包

<dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>

编写测试用例

 这里只在springboot下面的默认的test包下执行测试用例。
用SpringBoot单元测试如何模拟发送HTTP请求_第1张图片
 也可以在这里新建包,一般建议测试用例的包名和源码的保持一致,以便于维护。
 DemeApplicationTests类最开始的代码如下,这边博客的测试代码都是在这里编写。

package com.example.demo;

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.mock.web.MockHttpServletRequest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MockMvcBuilder;
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;

//表示使用SpringRunner来执行我们的测试
@RunWith(SpringRunner.class)
//表示这是个springboot测试类
@SpringBootTest
public class DemoApplicationTests {

    @Autowired
    private WebApplicationContext wac ;

    //伪造一个MVC的环境,伪造的环境不会启动tomcat,
    // 所以测试用例会启动的很快
    private MockMvc mockMvc;

	//在测试之前注册mockmvc
    @Before
    public void setUp(){
        mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
    }

    @Test
    public void whenQuerySuccess() throws  Exception{
        mockMvc.perform(MockMvcRequestBuilders.get("/user")//发送get请求
                         .contentType(MediaType.APPLICATION_JSON_UTF8))//设置返回类型
                        .andExpect(MockMvcResultMatchers.status().isOk())//添加期望,如果返回结果是ok的
                        //用jsonpath来判断,如果返回的json是个集合且长度为3
                        .andExpect(MockMvcResultMatchers.jsonPath("$.length()").value(3));
    }


}

用SpringBoot单元测试如何模拟发送HTTP请求_第2张图片

JSONPATH

 jsonpaht表达式具体的链接:https://github.com/json-path/JsonPath

你可能感兴趣的:(springboot,springboot,junit)