怎么给Spring3 MVC中的Action做JUnit单元测试
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章给大家分享的是有关怎么给Spring3 MVC中的Action做JUnit单元测试的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用了spring3 MVC后,给a
千家信息网最后更新 2025年01月18日怎么给Spring3 MVC中的Action做JUnit单元测试
这篇文章给大家分享的是有关怎么给Spring3 MVC中的Action做JUnit单元测试的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
使用了spring3 MVC后,给action做单元测试也很方便,我以前从来不给action写单元测试的,再在不同了,方便了,所以一定要写。
JUnitActionBase类是所有JUnit的测试类的父类
package test; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.junit.BeforeClass; import org.springframework.mock.web.MockServletContext; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.XmlWebApplicationContext; import org.springframework.web.servlet.HandlerAdapter; import org.springframework.web.servlet.HandlerExecutionChain; import org.springframework.web.servlet.HandlerMapping; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter; import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping; /** * 说明: JUnit测试action时使用的基类 * * @author 赵磊 * @version 创建时间:2011-2-2 下午10:27:03 */ public class JUnitActionBase { private static HandlerMapping handlerMapping; private static HandlerAdapter handlerAdapter; /** * 读取spring3 MVC配置文件 */ @BeforeClass public static void setUp() { if (handlerMapping == null) { String[] configs = { "file:src/springConfig/springMVC.xml" }; XmlWebApplicationContext context = new XmlWebApplicationContext(); context.setConfigLocations(configs); MockServletContext msc = new MockServletContext(); context.setServletContext(msc); context.refresh(); msc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, context); handlerMapping = (HandlerMapping) context .getBean(DefaultAnnotationHandlerMapping.class); handlerAdapter = (HandlerAdapter) context.getBean(context.getBeanNamesForType(AnnotationMethodHandlerAdapter.class)[0]); } } /** * 执行request对象请求的action * * @param request * @param response * @return * @throws Exception */ public ModelAndView excuteAction(HttpServletRequest request, HttpServletResponse response) throws Exception { HandlerExecutionChain chain = handlerMapping.getHandler(request); final ModelAndView model = handlerAdapter.handle(request, response, chain.getHandler()); return model; } }
更多关系Spring的信息
Spring 论坛 http://www.itchm.com/forum-59-1.html
这是个JUnit测试类,我们可以new Request对象,来参与测试,太方便了。给request指定访问的URL,就可以请求目标Action了。
package test.com.app.user; import org.junit.Assert; import org.junit.Test; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.web.servlet.ModelAndView; import test.JUnitActionBase; /** * 说明: 测试OrderAction的例子 * * @author 赵磊 * @version 创建时间:2011-2-2 下午10:26:55 */ public class TestOrderAction extends JUnitActionBase { @Test public void testAdd() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); MockHttpServletResponse response = new MockHttpServletResponse(); request.setRequestURI("/order/add"); request.addParameter("id", "1002"); request.addParameter("date", "2010-12-30"); request.setMethod("POST"); // 执行URI对应的action final ModelAndView mav = this.excuteAction(request, response); // Assert logic Assert.assertEquals("order/add", mav.getViewName()); String msg=(String)request.getAttribute("msg"); System.out.println(msg); } }
需要说明一下 :由于当前最想版本的Spring(Test) 3.0.5还不支持@ContextConfiguration的注解式context file注入,所以还需要写个setUp处理下,否则类似于Tiles的加载过程会有错误,因为没有ServletContext。3.1的版本应该有更好的解决方案。
感谢各位的阅读!关于"怎么给Spring3 MVC中的Action做JUnit单元测试"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
测试
单元
更多
内容
对象
时间
版本
篇文章
赵磊
不同
不错
实用
例子
信息
文件
文章
方案
注解
目标
看吧
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
腾讯云服务器几分钟不操作就断线
生态家网络技术有限公司
软件开发可行性分析的结语
方舟生存进化租什么样的服务器
网络技术员的工作职责
魔兽世界70服务器人口比例
vb6怎么建数据库
网络技术研究中心 项目
圣安地列斯一个服务器有多少人
小学网络安全应急措施
c 文件存入数据库
公安交通软件开发的公司
网络安全哈管理制度制度
许昌网络安全系统价格
苏州移动软件开发流程
学生学习用的服务器配置
液冷服务器龙头股
嵌入式软件开发用什么笔记本
数据库有数据如何修改数据库名
检索工具与数据库
网安大队开设网络安全课
三级数据库技术属于信息系统
云手机的服务器地址怎么填
计算机与网络技术基础简答
公安局网络安全支队职责
无源光网络技术比较
软件开发用图标
股票软件开发网
浪潮服务器 价格
软件开发现在该怎么做