码迷,mamicode.com
首页 > 编程语言 > 详细

使用MockMvc进行springboot调试(SpringbootTest)

时间:2019-10-15 09:17:05      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:context   ppc   pos   关闭   factor   本地   classes   休闲   handler   

测试前关闭web项目。springboot启动程序WebApplication.class

笔者本地自定了端口SpringBootTest.WebEnvironment.DEFINED_PORT

代码如下:

import com.netmarch.web.WebApplication;
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.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockHttpSession;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

import java.time.Instant;
import java.util.Random;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = WebApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@AutoConfigureMockMvc
public class TestAppController {

    @Autowired
    private WebApplicationContext context;

    @Autowired
    private MockMvc mvc;

    private MockHttpSession session;// 1.定义一个变量保存session

    String pathOnClasspath;



    @Before
    public void setUp() throws Exception {
        mvc = MockMvcBuilders.webAppContextSetup(context).build();
        session = new MockHttpSession(); //2.初始化
    }

    @Test
    public void login() throws Exception {
        // 登陆
        MockHttpServletRequestBuilder loginRequestBuilder = MockMvcRequestBuilders.post("/user2/login")
                .param("loginName", "test")
                .param("password", "567")
                .contentType(MediaType.APPLICATION_JSON_UTF8)
                .accept(MediaType.APPLICATION_JSON)
                .session(session);//3.当某个请求需要session时,直接在构造器中绑定需要的session
        mvc.perform(loginRequestBuilder).andDo(MockMvcResultHandlers.print());

    }

    @Test
    public void save() throws Exception {

        //先登录
        login();

        mvc.perform(post("/app/save")
                .param("name","测试")
                .param("categoryId","567")
                .param("description","休闲益智类游戏语音识别测试")
                .session(session)
                .contentType(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk())
                //.andExpect(jsonPath("$",hasSize(1)))
                //.andExpect(jsonPath("$.message").value(is("保存成功")))
                //.andExpect(jsonPath("$.message"),is("保存成功"))
                .andDo(MockMvcResultHandlers.print());
    }


    @Test
    public void update() throws Exception{
        Random rnd = new Random();
        int id = rnd.nextInt(6);
        mvc.perform(
                post("/app/update")
                        .param("id", String.valueOf(id))
                        .param("name", String.format("测试%s", Instant.now().toEpochMilli()))
                        .param("description", "描述12121")
        ).andDo(MockMvcResultHandlers.print());
    }

    @Test
    public void list() throws Exception {
        mvc.perform(get("/app/list")
                .contentType(MediaType.TEXT_HTML))
                .andExpect(status().isOk())
                .andDo(MockMvcResultHandlers.print());
    }

    @Test
    public void filteredList() throws Exception {
        mvc.perform(post("/app/list")
                .param("keyword","111")
                .contentType(MediaType.TEXT_HTML))
                .andExpect(status().isOk())
                .andDo(MockMvcResultHandlers.print());
    }

    @Test
    public void testisDuplicatedName() throws Exception
    {
        mvc.perform(post("/app/isDuplicatedName")
                .param("name","测试")
        ).andDo(MockMvcResultHandlers.print());
    }


}

测试输出效果

技术图片

 

 

其他参考:

https://www.petrikainulainen.net/programming/spring-framework/integration-testing-of-spring-mvc-applications-write-clean-assertions-with-jsonpath/

使用MockMvc进行springboot调试(SpringbootTest)

标签:context   ppc   pos   关闭   factor   本地   classes   休闲   handler   

原文地址:https://www.cnblogs.com/passedbylove/p/11675333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!