当前位置: 首页 > news >正文

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

相关文章:

  • 第七周
  • Android 视频解析MediaExtractor
  • vs2012 快捷键
  • [数据结构]链表的实现在PHP中
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 玻璃手机后壳或将成为主流,荣耀专注三年极光玻璃 获赞有眼光!
  • 《数据结构与算法》-3-栈和队列
  • 马哥教育第四十一至四十三学习总结
  • 如何备份MySQL数据库
  • 开拓者软件开发团队
  • zabbix3.2监控linux磁盘IO
  • python 笔记 之 random 随机模块
  • 2019哪些是更靠谱的创业赛事活动平台?
  • javascript变量作用域
  • eclipse no java machine vitual was found
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【译】理解JavaScript:new 关键字
  • create-react-app项目添加less配置
  • CSS相对定位
  • Druid 在有赞的实践
  • ES6简单总结(搭配简单的讲解和小案例)
  • go语言学习初探(一)
  • HTTP 简介
  • JS函数式编程 数组部分风格 ES6版
  • Puppeteer:浏览器控制器
  • scala基础语法(二)
  • Terraform入门 - 1. 安装Terraform
  • Vue--数据传输
  • 分布式熔断降级平台aegis
  • 前嗅ForeSpider采集配置界面介绍
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 写给高年级小学生看的《Bash 指南》
  • 一起参Ember.js讨论、问答社区。
  • 自动记录MySQL慢查询快照脚本
  • ionic入门之数据绑定显示-1
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #NOIP 2014# day.2 T2 寻找道路
  • (C#)一个最简单的链表类
  • (C语言)二分查找 超详细
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (第一天)包装对象、作用域、创建对象
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)计算机毕业设计大学生兼职系统
  • (七)c52学习之旅-中断
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十三)Maven插件解析运行机制
  • (一) storm的集群安装与配置
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)插入排序
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET MVC 验证码
  • .NET多线程执行函数
  • ::before和::after 常见的用法