• Spring MVC单元测试笔记整理


    使用@WebMvcTest注解
    1. 编写单元测试类
      @WebMvcTest
      class HelloControllerWebMvcTest {
          private MockMvc mockMvc;
          @MockBean
          private HelloService helloService ;
          //
          @BeforeEach
          void setup(WebApplicationContext wac) {
              this.mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
          }
          @Test
          void index() throws Exception {
              given(this.helloService.hello("张三")).willReturn("hello, 张三") ;
              //
              MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/hello/index")
                      .accept(MediaType.APPLICATION_JSON)
                      .contentType(MediaType.APPLICATION_JSON);
              mockMvc.perform(requestBuilder)
                      .andExpect(status().isOk())
                      .andExpect(content().contentType("application/json"))
                      .andDo(print()) ;
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
    使用@SpringJUnitWebConfig注解
    1. 编写配置类
      @Configuration
      @EnableWebMvc
      @ComponentScan(basePackages = "com.yicj.study.controller")
      public class WebMvcConfig {
          @Bean
          public HelloService helloService(){
              return new HelloServiceImpl() ;
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    2. 编写单元测试
      @SpringJUnitWebConfig(classes = WebMvcConfig.class)
      class HelloControllerWebConfigTest {
          MockMvc mockMvc;
          @BeforeEach
          void setup(WebApplicationContext wac) {
              this.mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
          }
          @Test
          void index() throws Exception {
              MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("http://localhost:8081/hello/index")
                      .accept(MediaType.APPLICATION_JSON)
                      .contentType(MediaType.APPLICATION_JSON);
              mockMvc.perform(requestBuilder)
                      .andExpect(status().isOk())
                      .andExpect(content().contentType("application/json"))
                      .andDo(print()) ;
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
    使用standaloneSetup模式
    1. 编写单元测试
      class HelloControllerStandaloneTest {
          MockMvc mockMvc;
          // 这里不能使用MockBean
          HelloService helloService ;
          @BeforeEach
          void setup() {
              helloService = new HelloServiceImpl();
              this.mockMvc = MockMvcBuilders.standaloneSetup(new HelloController(helloService))
                      //.defaultRequest(MockMvcRequestBuilders.get("/hello/index").accept(MediaType.APPLICATION_JSON))
                      .alwaysExpect(status().isOk())
                      .alwaysExpect(content().contentType("application/json"))
                      .build();
          }
          @Test
          void index() throws Exception {
              //given(this.helloService.hello("张三")).willReturn("hello, 张三") ;
              MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/hello/index")
                      .accept(MediaType.APPLICATION_JSON)
                      .contentType(MediaType.APPLICATION_JSON);
              mockMvc.perform(requestBuilder)
                      .andExpect(status().isOk())
                      .andExpect(content().contentType("application/json"))
                      .andDo(print()) ;
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
  • 相关阅读:
    理解Kruskal算法的前提----深入理解并查集【超简单~】
    如何录制视频?有了这款视频录制软件,粉丝多了,转发量也起来了
    java计算机毕业设计基于springboot+vue+elementUI的家具销售电商平台(前后端分离)
    js的this及this的指向是什么
    利用衍射表面消色差的混合目镜建模
    Stream流
    操作系统浅谈
    PHP while 和 do-while 循环 学习资料
    uniapp开发微信小程序,webview内嵌h5,h5打开pdf地址,解决方案
    Python实现点击选择验证码破解
  • 原文地址:https://blog.csdn.net/yichengjie_c/article/details/133683746