• 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
  • 相关阅读:
    【Linux】shell脚本和bat脚本:
    内质网应激+预后模型新方向,干湿结合搞定5+sci
    【FPGA教程案例12】基于vivado核的复数乘法器设计与实现
    【STL】map/multimap容器
    全网首发!消息中间件神仙笔记,涵盖阿里十年技术精髓
    【数据结构】堆(Heap):堆的实现、堆排序、TOP-K问题
    mac安装git
    【力扣刷题】预测赢家
    使用cmake出现编译成功,运行却说找不到库?
    ZZNUOJ_C语言1114:逆序(完整代码)
  • 原文地址:https://blog.csdn.net/yichengjie_c/article/details/133683746