Spring MVC学习-----------对Action做JUnit单元测试
来源:互联网 发布:eu域名注册 编辑:程序博客网 时间:2024/05/22 12:30
如何给spring3 MVC中的Action做JUnit单元测试?
使用了spring3 MVC后,给action做单元测试变得很方便,我以前从来不给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;
- }
- }
这是个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.setServletPath("/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的版本应该有更好的解决方案,
参见: https://jira.springsource.org/browse/SPR-5243 。
参考 :http://www.iteye.com/topic/828513
0 0
- Spring MVC学习-----------对Action做JUnit单元测试
- Spring MVC Junit单元测试
- spring做单元测试,包括对struts2的action 的测试。
- junit对spring进行单元测试
- 关于spring mvc+mybatis+junit单元测试
- Junit对Spring Controller进行单元测试
- spring框架学习(三)junit单元测试
- spring框架学习(三)junit单元测试
- spring框架学习(三)junit单元测试
- spring框架学习(三)junit单元测试
- spring框架学习(三)junit单元测试
- spring框架学习(三)junit单元测试
- spring框架学习(三)junit单元测试
- spring框架学习(三)junit单元测试
- spring框架学习(三)junit单元测试
- spring框架学习(三)junit单元测试
- spring框架学习(三)junit单元测试
- spring框架学习(三)junit单元测试
- Linux进程调度-------O(1)调度和CFS调度器
- 【重要】安卓微信闪退,非清空数据法解决,不破坏聊天记录【完善中】
- 用 Windows API “GetAdaptersInfo” 获取 MAC 时遇到的问题
- 【C/C++学院】0814-引用高级、引用高级增加/auto自动变量自动根据类型创建数据/Bool/Enum/newdelete全局/大数据乘法与结构体/函数模板与auto/宽字符本地化/inline
- windows-电脑及软件相关一些快捷键
- Spring MVC学习-----------对Action做JUnit单元测试
- hdu 杭电1509 Windows Message Queue【优先队列】
- OSX工具集之——Theos
- linux 修改文件内容 vi命令
- Android闪屏问题如何Debug
- openflow详解
- 为什么我们应该为Ruby2.0的GC感到excited!
- poj2409--Let it Bead(置换群+polya奇数)
- iOS Layer动画的KeyPath