zoukankan      html  css  js  c++  java
  • springmvc controller junit 测试

    第一次搭建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>
    

     来源:https://www.cnblogs.com/oucbl/p/5943743.html

  • 相关阅读:
    【遇见时光】笔试-偶数最大距离-java
    【遇见时光】笔试-下蹲-java实现
    [遇见时光]内推笔试-藏宝图-java实现
    【遇见时光】内推编程-洗牌
    [遇见时光]剑指offer-顺时针打印矩阵java
    [遇见时光]解决‘javac’不是内部或外部命令的问题
    [遇见时光]Java多线程
    Android Studio 打包错误
    android 开发不常用技巧集
    异步任务结束操作,对于ativity fragment SharedPreferences等涉及到context操作前的判断
  • 原文地址:https://www.cnblogs.com/kongxc/p/8910205.html
Copyright © 2011-2022 走看看