利用junit对springMVC的Controller进行测试
本文转自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
利用junit对springMVC的Controller进行测试的更多相关文章
- spring boot利用controller来测试写的类
我们在开发spring boot应用程序的时候,往往需要测试某个写好的类,但是在测试的时候发现不太好测试,用Junit等测试框架,总是会报一些问题,大致是找不到配置文件以及无法利用spring创建的对 ...
- spring controller 方法测试
controller 测试 不使用其他api接口测试工具 一般而言,我们写好一个模块后,会对其进行单元测试,再集成到现有的系统中. 但是呢~针对Controller.Service.Dao三层来说,我 ...
- SpringMVC之Controller和参数绑定
在上一篇Spring+SpringMVC+Mybatis整合中说到了SSM的整合,并且在其中添加了一个简单的查询功能,目的只是将整个整合的流程进行一个梳理,下面在上一篇中工程的基础上再说一些关于Spr ...
- SpringMVC中controller返回图片(转)
本文转自:http://blog.csdn.net/u011637069/article/details/51112187 SpringMVC中controller通过返回ModelAndView然后 ...
- springmvc中controller内方法跳转forward?redirect?
使用springmvc的controller的时候,碰到controller内方法的跳转的问题,记录下问题以及自己测试的过程. 场景: 业务执行更新操作之后返回列表页面,列表页面需默认展示查询的列表数 ...
- springmvc注解@Controller和@RequestMapping
Spring从2.5版本引入注解,从而让开发者的工作变得非常的轻松 springmvc注解Controller org.springframework.stereotype.Controller注解类 ...
- SpringMVC:Controller配置总结
西部开源-秦疆老师:SpringMVC系列博客 , 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! SpringMVC:Controlle ...
- springMVC基础controller类
此文章是基于 搭建SpringMVC+Spring+Hibernate平台 功能:设置请求.响应对象:session.cookie操作:ajax访问返回json数据: 创建springMVC基础con ...
- springmvc 中controller与jsp传值
参考:springmvc 中controller与jsp传值 springMVC:将controller中数据传递到jsp页面 jsp中,死活拿不到controller中的变量. 花了半天,网上列出各 ...
随机推荐
- bzoj 3029 守卫者的挑战 —— 概率DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3029 设 f[i][j][k] 表示第 i 次挑战,已经成功 j 次,剩余容量为 k 的概率 ...
- .Net-ASP.NET Web API:目录
ylbtech-.Net-ASP.NET Web API:目录 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 0. https://www.asp.net/we ...
- .NET Core Run On Docker By Kubernetes 系列文章汇总
前言介绍 .NET Core是微软新一代主力编程平台,开源.免费.跨平台.轻量级.高性能,支持Linux.Docker.k8s等环境,适合开发微服务.云原生.大型互联网应用.全开源解决方案. Dock ...
- Linux<小白>详细笔记
目录 应放置的内容 /bin 系统有很多放置执行文件的目录,但是/bin目录比较特殊./bin放置的是在单用户维护模式下还能够被操作的命令.在/bin下面的命令可以被root与一般用户使用. / ...
- xml转换成数组array
直接上代码,成功转换 if($data){ //返回来的是xml格式需要转换成数组再提取值,用来做更新 $startnum = strpos($data,"<xml>" ...
- 知识总结1:debug命令汇总(一)
-r 得到当前寄存器状态或修改寄存器状态 -d 跳到默认(CS:IP指定的地址)区间 -d 段地址:偏移地址 跳到(段地址*+偏移地址)区间 -d 段地址:起始偏移地址 终止偏移地址 跳到(段地址*+ ...
- Cracking the Coding Interview 6.5
There is a building of 100 floors. If an egg drops from the Nth floor or above, it will break. If it ...
- JQuery 动态创建表单,并自动提交
前言:写这个是为了实现使用cookie进行自动登录的功能, 下面的代码是一个元素一个元素进行创建和赋值的, (可以尝试下将所有的html代码(form.input)全部拼好以后放到${ } 中,再进行 ...
- 一周代码秀之[11.18~11.24 linq2xml面向对象]
1.xml <Sections> <Item key ="1" value ="孕哺期" canBeSelected="false& ...
- linux 新添加的硬盘格式化并挂载到目录下
需求: 新增加一块硬盘sdb,将sdb分区,只分一个区,格式化,挂载到目录/ssd下. 1. 查看现在已有的分区状态 # df –l 图中显示,没有看到sdb硬盘 2. 查看服务器安装的硬盘状态( ...