zoukankan      html  css  js  c++  java
  • ssm controller层 junit单元测试

    原文链接:https://www.cnblogs.com/oucbl/p/5943743.html

    springmvc controller junit 测试

    作者:blouc@qq.com
    本文为作者原创,转载请注明出处:https://www.cnblogs.com/oucbl/p/5943743.html


    第一次搭建SSM框架,整合SpringMVC完成后进行Controller测试,找资料并解决问题。

    下图是我的完整目录:

    root

    1 建立UserController类

    代码清单 1-1:UserController.java

    package org.sei.controller;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import org.sei.pojo.User;
    import org.sei.service.UserService;
    
    @Controller
    @RequestMapping("/user")
    public class UserController
    {
        @Resource
        private UserService userService;
        
        @RequestMapping("/showUser1")
        public String toIndex(HttpServletRequest request,Model model)
        {
            int userId = Integer.parseInt(request.getParameter("id"));
            User user = this.userService.getUserById(userId);
            model.addAttribute("user", user);
            return user.getUserName();
        }
        
        @RequestMapping("/showUser3")
        public String toIndex1(User u,Model model)  //注意:参数不同
        {
            int userId = u.getId();
            User user = this.userService.getUserById(userId);
            model.addAttribute("user", user);
            return user.getUserName();
        }
        
    }
    

    2 建立测试类

    代码清单 2-1:MockTestController.java

    package org.sei.testmybatis;
    
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.MediaType;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    import org.springframework.test.context.web.WebAppConfiguration;
    import org.springframework.test.web.servlet.MockMvc;
    import org.springframework.test.web.servlet.setup.MockMvcBuilders;
    import org.springframework.web.context.WebApplicationContext;
    import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
    import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
    import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations={"classpath:spring-mybatis.xml","classpath:spring-mvc.xml"})
    
    @WebAppConfiguration
    public class  MockTestController
    {
       protected MockMvc mockMvc;
    
       @Autowired
       protected WebApplicationContext wac;
    
       @Before()  //这个方法在每个方法执行之前都会执行一遍
       public void setup() 
       {
           mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();  //初始化MockMvc对象
       }
    
       @Test
       public void getAllCategoryTest() throws Exception 
       {
           String responseString = mockMvc.perform
               (
                   get("/user/showUser1")          //请求的url,请求的方法是get
                   //get("/user/showUser2")          //请求的url,请求的方法是get
                   .contentType(MediaType.APPLICATION_FORM_URLENCODED)//数据的格式
                   .param("id","1")   //添加参数(可以添加多个)
                   //.param("id","3")   //添加参数(可以添加多个)
               )
               .andExpect(status().isOk())    //返回的状态是200
               .andDo(print())         //打印出请求和相应的内容
               .andReturn().getResponse().getContentAsString();   //将相应的数据转换为字符串
           System.out.println("-----返回的json = " + responseString);
       }
    
    }
    
    

    3 JUnit测试

    • 测试的数据库表如下:

    mysql table
    • 测试1:参数(HttpServletRequest request,Model model)

    test1
    • 测试2:参数(User u,Model model)

    test2

    4 几个jar包

    很多问题都来自于确少jar包。

    下面给出几个jar包的Maven依赖:

    代码清单 4-1:pom.xml (局部)

            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
            </dependency>
            <!-- 映入JSON -->
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
                <version>1.9.13</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.8.3</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.8.3</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>2.8.3</version>
            </dependency>
    
    

    参考:

    1. Junit测试Controller(MockMVC使用),传输@RequestBody数据解决办法
    2. 基于Spring MVC做单元测试(一)——使用Spring Test框架
    3. junit 测试 springmvc controller
    4. spring-mvc junit test

     
     
     
    好文要顶 关注我 
  • 相关阅读:
    4.7字符串
    4.5 基本类型和运算符
    4.4 变量
    4.6 字符串
    hp
    openstack newton linuxbridge 改成 ovs
    理解裸机部署过程ironic
    csredis base usage
    redisclient can not connect
    Linux Install redis
  • 原文地址:https://www.cnblogs.com/libin6505/p/8384850.html
Copyright © 2011-2022 走看看