本文转自http://www.tuicool.com/articles/7rMziy

平时对junit测试service/DAO层已经很熟悉不过了,如果不了解,可以猛戳这里,但是我们要测试controller层,不能总重启服务器吧,(重启tomcat好慢的飘过,别。。。别走啊),那么我们就用junit4模拟请求,测试controller层的方法。

代码1:直接Controller调用方法

import static org.junit.Assert.*;import java.sql.SQLException;import org.junit.Before;
import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.zz.login.web.LoginController; /** * @author zhzh * 2015-4-7 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"classpath*:/beans.xml","classpath*:/spring-mvc.xml"}) public class TestController { // 模拟request,response private MockHttpServletRequest request; private MockHttpServletResponse response; // 注入loginController @Autowired private LoginController loginController ; // 执行测试方法之前初始化模拟request,response @Before public void setUp(){ request = new MockHttpServletRequest(); request.setCharacterEncoding("UTF-8"); response = new MockHttpServletResponse(); } /** * * @Title:testLogin * @Description: 测试用户登录 */ @Test public void testLogin() { try { request.setParameter("userName", "admin"); request.setParameter("password", "2"); assertEquals("login",loginController.loginIn(request,response)) ; } catch (Exception e) { e.printStackTrace(); } } }

代码2:调用请求路径

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.transaction.TransactionConfiguration; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.WebApplicationContext; /** * @author zhzh * 2015-4-7 */ @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration({"classpath*:/beans.xml","classpath*:/spring-mvc.xml"}) //当然 你可以声明一个事务管理 每个单元测试都进行事务回滚 无论成功与否 @TransactionConfiguration(defaultRollback = true) @Transactional public class TestController2 { @Autowired private WebApplicationContext wac; private MockMvc mockMvc; @Before public void setup() { this.mockMvc = webAppContextSetup(this.wac).build(); } @Test public void testLogin() throws Exception { mockMvc.perform((post("/loginTest").param("userName", "admin").param("password", "1"))).andExpect(status().isOk()) .andDo(print()); } /*@Test //有些单元测试你不希望回滚 @Rollback(false) public void testInsert() throws Exception { mockMvc.perform((post("/insertTest"))).andExpect(status().isOk()) .andDo(print()); } */ }

注意:import static 的spring类

代码3:

LoginController代码片段

/*** 登录入口* @param request* @param response* @return*/@RequestMapping(value = "/loginTest", method = RequestMethod.POST)public String loginTest(HttpServletRequest request,HttpServletResponse response){ String account = request.getParameter("userName"); String password = request.getParameter("password"); if (account.equals("admin")&&password.equals("1")){ return "index"; }else{ return "login"; } } 

参考: http://blog.csdn.net/a95473004/article/details/8926929

http://ysj5125094.iteye.com/blog/2082110

转载于:https://www.cnblogs.com/panxuejun/p/7089030.html

利用junit对springMVC的Controller进行测试相关推荐

  1. Spring整合Mongodb,Maven的依赖,Spring配置,MongoDB的公共操作类,使用SpringMVC的Controller进行测试并返回结果的案例

    在和Spring和MongoDB进行整合的时候需要如下三个jar,分别是: spring-data-commons spring-data-mongodb mongo-java-driver 下面讲解 ...

  2. 使用JUnit 5 执行条件和并发测试

    JUnit 和Spring 5:Spring 5 全面接纳了函数式范例,并支持JUnit 5 及其新的函数式测试风格.还提供了对JUnit 4 的向后兼容性,以确保不会破坏旧代码. Spring 5 ...

  3. SpringMVC之Controller和参数绑定

    在上一篇Spring+SpringMVC+Mybatis整合中说到了SSM的整合,并且在其中添加了一个简单的查询功能,目的只是将整个整合的流程进行一个梳理,下面在上一篇中工程的基础上再说一些关于Spr ...

  4. springboot2+junit5+MockMvc(Mockito)实现对Controller的测试,配置都有,很详细了。

    背景: 今天偶然想测试下每个接口是否可以访问,网上找了一堆,基本没有一个在我的环境上实现了,没有一篇文章有详细的配置,于是只能用作参考自己进行琢磨,最后就出现了这样的文章也是给各位参考了,哈哈哈. 配 ...

  5. SpringMVC的Controller详解

    SpringMVC的Controller详解 一.控制器Controller 控制器负责提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现. 控制器负责解析用户的请求并将其转换为一个模型. ...

  6. 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试

    案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...

  7. TF之pix2pix:基于TF利用Facades数据集训练pix2pix模型、测试并进行生成过程全记录

    TF之pix2pix:基于TF利用Facades数据集训练pix2pix模型.测试并进行生成过程全记录 目录 TB监控 1.SCALARS 2.IMAGES 3.GRAPHS 4.DISTRIBUTI ...

  8. springmvc 中controller与jsp传值

    在springmvc中的controller所对应的函数中,如果需要从*.jsp页面中获取数据,可以自行在函数括号中写,springmvc会自动封装传过来的. spring-mvc.xml <! ...

  9. 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

    目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumen ...

最新文章

  1. RESTful API 设计规范精讲
  2. sql 集合查询 数据更新操作语句
  3. 人工智能基础-机器学习任务之常规解决的六大问题
  4. 数据查询和业务流分开_数据仓库介绍与实时数仓案例
  5. Java JVM 汇编代码入门 GitChat链接
  6. [python]---从java到python(02)---多线程,队列
  7. 支撑EB级规模的大数据平台深度揭秘
  8. 一个很小的图标需要另一个HTTP请求是不是很愚蠢? 如何将收藏夹图标放到精灵中?
  9. Vue使用wangEditor 封装成独立组件实现富文本编辑器
  10. 将PICTUREBOX中显示的图片,存入数据库中
  11. labview 一个tdms文件 两个线程同时往里写_LabVIEW 状态图(Statechart)介绍
  12. java 文件上传 乱码_java中文传值乱码问题的解决方法
  13. 理解图像处理中的 双线性内插法(图文说明)
  14. 材料工程计算机技术应用,计算机在材料工程中的应用
  15. hurst指数matlab,hurst指数matlab
  16. 分享一个Python画樱花树的代码
  17. nrf52x 二 GPIOTE
  18. 人工智能学习体系大纲
  19. EXCEL链接Kylin
  20. 第一章-一大波数正在靠近——排序

热门文章

  1. Lc123验证是不是回文序列
  2. Python入门--方法重写
  3. 阿里、网易、滴滴共十次前端面试碰到的问题
  4. bzoj 1655: [Usaco2006 Jan] Dollar Dayz 奶牛商店(高精度完全背包)
  5. bzoj 1639: [Usaco2007 Mar]Monthly Expense 月度开支(二分)
  6. opencv 霍夫变换检测直线和圆
  7. 高斯滤波详解 python实现高斯滤波
  8. [机器学习] 概念解析:从经验风险、结构风险到代价函数、损失函数、目标函数
  9. js排序算法详解-桶排序
  10. java界面怎么加图片不显示不出来_Java登录界面中添加背景图片,程序无错,但加载不了图片,求帮忙...