Springboot 从零开始 6 MockMvc测试api

本文将介绍如何从零开始使用Springboot的MockMvc进行API测试。首先,你需要引入测试所需的依赖,包括SpringRunner和MockMvc。@RunWith(SpringRunner.class)用于整合Spring与JUnit,MockMvc则用于模拟HTTP请求。在测试之前,可以使用@Before注解的方法进行预配置。由于是Web项目,我们需要使用@WebAppConfiguration来模拟ServletContext。通过这样的设置,我们可以对Springboot应用的API进行有效测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试所需依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

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

说明
@RunWith注解:SpringRunner.class使用 Junit 整合 Spring
MockMvc: 注入 MockMvc 模拟 Http 请求

@Before注解:在@Test运行前调用进行预先配置,相关的注解流程是(@BeforeClass->@Before->@Test->@After->@AfterClass)

@WebAppConfiguration: Web项目,Junit需要模拟ServletContext,测试类加上@WebAppConfiguration。

package eugene.project.eop.UserAbout;

import eugene.project.eop.model.EProject;
import eugene.project.eop.model.EUser;
import eugene.project.eop.repository.EProjectRepository;
import eugene.project.eop.repository.EUserRepository;
import org.json.JSONObject;
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.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
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.MockHttpServletRequestBuilder;
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 javax.annotation.Resource;
import java.util.List;


@SpringBootTest
@RunWith(SpringRunner.class)
@WebAppConfiguration
public class FunctionTest {

    private MockMvc mockMvc;

    @Autowired
    private WebApplicationContext webApplicationContext;

    @Resource
    private EUserRepository userRepository;

    @Resource
    private EProjectRepository projectRepository;


    @Before
    public void setup() throws Exception {
        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.webApplicationContext).build();
    }

    @Test
    public void testApi() throws Exception {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("phone", "13700000000");
        jsonObject.put("password", "1");
        String requestContent = jsonObject.toString();
        MockHttpServletRequestBuilder request = MockMvcRequestBuilders
                .post("/login")
                .accept(MediaType.APPLICATION_JSON)
                .contentType(MediaType.APPLICATION_JSON)
                .content(requestContent);
        MvcResult result = mockMvc.perform(request)
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andReturn();
        System.out.println("result : " + result.getResponse().getContentAsString());
    }

}

测试结果

Hibernate: select euser0_.id as id1_3_, euser0_.binding_phone as binding_2_3_, euser0_.password as password3_3_, euser0_.username as username4_3_ from user euser0_ where euser0_.binding_phone=?
MD5验证通过
result : {"msg":"success","data":{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiI5In0._orNWXJE5wEcHqL-2LKBgKGKj9UbUCEWFb_eiOyzyPQ"},"status":200}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值