• 【Junit】Junit 与 SpringMVC 整合测试


      本章介绍使用 Junit4 测试 SpringBoot,关于 Junit4 的基本使用 参考:【Junit】Junit快速入门

      关于SpringMVC项目搭建参考,参考:【Maven】Eclipse 使用Maven创建SpringMVC Web项目

    一、项目框架

    1、新建一个SpringMVC项目

    2、引入Junit4依赖,项目完整依赖如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     5     <modelVersion>4.0.0</modelVersion>
     6 
     7     <groupId>org.example</groupId>
     8     <artifactId>test-junit-springmvc</artifactId>
     9     <version>1.0-SNAPSHOT</version>
    10 
    11     <properties>
    12         <!-- spring -->
    13         <spring.version>5.2.4.RELEASE</spring.version>
    14         <!-- Servlet -->
    15         <servlet.version>3.0.1</servlet.version>
    16         <jsp-api.version>2.2</jsp-api.version>
    17         <!-- jstl -->
    18         <jstl.version>1.2</jstl.version>
    19         <standard.version>1.1.2</standard.version>
    20 
    21         <maven.compiler.source>8</maven.compiler.source>
    22         <maven.compiler.target>8</maven.compiler.target>
    23     </properties>
    24 
    25     <dependencies>
    26         <!-- Spring -->
    27         <dependency>
    28             <groupId>org.springframework</groupId>
    29             <artifactId>spring-webmvc</artifactId>
    30             <version>${spring.version}</version>
    31         </dependency>
    32 
    33         <!-- Spring Test 模块 -->
    34         <dependency>
    35             <groupId>org.springframework</groupId>
    36             <artifactId>spring-test</artifactId>
    37             <version>${spring.version}</version>
    38             <scope>test</scope>
    39         </dependency>
    40 
    41 
    42         <!-- Servlet -->
    43         <dependency>
    44             <groupId>javax.servlet</groupId>
    45             <artifactId>javax.servlet-api</artifactId>
    46             <version>${servlet.version}</version>
    47             <scope>provided</scope>
    48         </dependency>
    49         <dependency>
    50             <groupId>javax.servlet.jsp</groupId>
    51             <artifactId>jsp-api</artifactId>
    52             <version>${jsp-api.version}</version>
    53             <scope>provided</scope>
    54         </dependency>
    55 
    56         <!-- jstl -->
    57         <dependency>
    58             <groupId>javax.servlet</groupId>
    59             <artifactId>jstl</artifactId>
    60             <version>${jstl.version}</version>
    61         </dependency>
    62         <dependency>
    63             <groupId>taglibs</groupId>
    64             <artifactId>standard</artifactId>
    65             <version>${standard.version}</version>
    66         </dependency>
    67 
    68         <!-- JSON -->
    69         <dependency>
    70             <groupId>com.fasterxml.jackson.core</groupId>
    71             <artifactId>jackson-databind</artifactId>
    72             <version>2.9.3</version>
    73         </dependency>
    74 
    75         <dependency>
    76             <groupId>junit</groupId>
    77             <artifactId>junit</artifactId>
    78             <version>RELEASE</version>
    79             <scope>test</scope>
    80         </dependency>
    81     </dependencies>
    82 
    83 </project>  

    3、项目controller如下:

     1 package com.test.junit.mvc.controller;
     2 
     3 import org.springframework.stereotype.Controller;
     4 import org.springframework.web.bind.annotation.RequestMapping;
     5 import org.springframework.web.bind.annotation.ResponseBody;
     6 import org.springframework.web.servlet.ModelAndView;
     7 
     8 import javax.servlet.http.HttpServletRequest;
     9 import java.util.HashMap;
    10 import java.util.Map;
    11 
    12 @Controller
    13 public class HelloController {
    14 
    15     @RequestMapping("/hello")
    16     @ResponseBody
    17     public String hello(){
    18         return "Hello World";
    19     }
    20 
    21     @RequestMapping("/map")
    22     @ResponseBody
    23     public Map map(){
    24         Map<String, String> map = new HashMap<>();
    25         map.put("name", "xiaoming");
    26         map.put("age", "18");
    27         return map;
    28     }
    29 
    30     @RequestMapping(value="/getView")
    31     public ModelAndView getView(HttpServletRequest request){
    32         System.out.println("getView");
    33         ModelAndView modelAndView = new ModelAndView("test-jsp");
    34         return modelAndView;
    35     }
    36 
    37 }
    View Code

    4、编辑测试类

     1 package com.test.junit.mvc;
     2 
     3 
     4 import org.junit.Before;
     5 import org.junit.Test;
     6 import org.junit.runner.RunWith;
     7 import org.springframework.beans.factory.annotation.Autowired;
     8 import org.springframework.http.MediaType;
     9 import org.springframework.test.context.ContextConfiguration;
    10 import org.springframework.test.context.junit4.SpringRunner;
    11 import org.springframework.test.context.web.WebAppConfiguration;
    12 import org.springframework.test.web.servlet.MockMvc;
    13 import org.springframework.test.web.servlet.MvcResult;
    14 import org.springframework.test.web.servlet.ResultActions;
    15 import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
    16 import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
    17 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
    18 import org.springframework.web.context.WebApplicationContext;
    19 import org.springframework.web.servlet.ModelAndView;
    20 
    21 
    22 // SpringRunner 继承了SpringJUnit4ClassRunner,
    23 // 没有扩展任何功能;使用SpringRunner,名字简短而已
    24 @RunWith(SpringRunner.class)
    25 // @RunWith(SpringJUnit4ClassRunner.class)
    26 // Web项目配置
    27 @WebAppConfiguration
    28 // 上下文配置
    29 @ContextConfiguration(locations = {"classpath:spring/spring-mvc.xml", "classpath:spring/spring-context.xml"})
    30 public class TestMVC {
    31 
    32     @Autowired
    33     private WebApplicationContext webApplicationContext;
    34 
    35     private MockMvc mockMvc;
    36 
    37     @Before
    38     public void setup() {
    39         // 构建mockMvc 对象
    40         this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    41     }
    42 
    43 
    44     @Test
    45     public void getView() throws Exception {
    46         ResultActions resultActions = this.mockMvc.perform(
    47                 // 数据的格式请求的url,请求的方法是get
    48                 MockMvcRequestBuilders.get("/getView")
    49         );
    50         // 打印调试结果到控制台
    51         resultActions.andDo(MockMvcResultHandlers.print());
    52         // 获取返回结果
    53         MvcResult mvcResult = resultActions.andReturn();
    54         // 获取视图
    55         ModelAndView modelAndView = mvcResult.getModelAndView();
    56         System.out.println(modelAndView);
    57     }
    58 
    59     @Test
    60     public void map() throws Exception {
    61         ResultActions resultActions = this.mockMvc.perform(
    62                 // 数据的格式请求的url,请求的方法是get
    63                 MockMvcRequestBuilders.get("/map")
    64                         .contentType(MediaType.APPLICATION_JSON)
    65         );
    66         resultActions.andDo(MockMvcResultHandlers.print());
    67         MvcResult mvcResult = resultActions.andReturn();
    68         System.out.println(mvcResult.getResponse().getContentAsString());
    69     }
    70 
    71     @Test
    72     public void hello() throws Exception {
    73         ResultActions resultActions = this.mockMvc.perform(
    74                 // 数据的格式请求的url,请求的方法是get
    75                 MockMvcRequestBuilders.get("/hello"));
    76         // 打印调试结果到控制台
    77         resultActions.andDo(MockMvcResultHandlers.print());
    78         // 获取返回结果
    79         MvcResult mvcResult = resultActions.andReturn();
    80         System.out.println(mvcResult.getResponse().getContentAsString());
    81     }
    82 }

      关于 MockMvc 的使用

      参考:https://www.cnblogs.com/zengls/p/11316454.html

      参考:https://zhuanlan.zhihu.com/p/98074553

  • 相关阅读:
    ORACLE-游标数
    Hibernate-原生SQL查询
    超链接无效
    首页统计脚本
    About_datebase
    PHP的学习--cookie和session--来自copy_02
    终于懂浏览器里面的cookies和session了
    About-PHP-02
    php链接数据库
    PHP 操作MySQL———来自copy
  • 原文地址:https://www.cnblogs.com/h--d/p/14707260.html
Copyright © 2020-2023  润新知