`
yun342173024
  • 浏览: 72842 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2 Action 测试

阅读更多
以前从来没有测试过Action,今天在struts的doc看到struts提供了一个junit插件,可以对action进行单元测试,这个插件是从struts 2.1.1开始有的,下面是一个小例子。
首先要搭建环境,struts2的jar包就说了,还要引入测试的jar包如下图


这里引入了spring的jar包,这个插件引用了spring的MockHttpServletRequest的模拟对象

struts配置文件

    <package name="testAction"   extends="struts-default" >
         <action name="actionTest"  class="action.TestAction"    method="doAction"  >
         <result name="success">/aa.jsp</result>
         <result name="input">/left.jsp</result>
       </action>
      </package>
 


要测试的action
   package action;

import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport  {
 
	private User u;
	
	public User getU() {
		
		
		return u;
	}

	public void setU(User u) {
		this.u = u;
	}
    
	/**
	 * 一个简单的用户名和密码的验证
	 * @return
	 * @throws Exception
	 */
	
	public String doAction()throws Exception{
		
		if(u.getPassword().equals("admin") && u.getUserName().equals("admin")){
			return SUCCESS;
		}else{
			return INPUT;
		}
		
	}
	
}
  


测试代码,测试类继承插件提供的抽象类StrutsTestCase,这个类提供了几个重要的方法
   package com.test;



import org.apache.struts2.StrutsTestCase;
import org.apache.struts2.dispatcher.mapper.ActionMapping;
import org.junit.Test;

import action.TestAction;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionProxy;

public class TestUserAction extends StrutsTestCase {
   
	
	
	
	@Test
	public void testGetActionMapping(){

		ActionMapping mapping = this.getActionMapping("/actionTest.action");
		assertNotNull(mapping);
		assertEquals("/",mapping.getNamespace());
		assertEquals("actionTest",mapping.getName());
		
		
	}
	
	@Test
	public void testGetActionProxy()throws Exception {
		//设置请求参数在调用getActionProxy
		request.setParameter("u.userName","admin");
		request.setParameter("u.password","admin");
	
		
		ActionProxy proxy = this.getActionProxy("/actionTest.action");
		assertNotNull(proxy); 
		String result = proxy.execute();
		TestAction action = (TestAction) proxy.getAction();
		assertEquals(Action.SUCCESS,result);
		assertEquals("admin",action.getU().getUserName());
		
		
		
	}
	
	
	
	
}



下面介绍一下StrutsTestCase几个方法

方法名字方法描述
executeAction(String)接收一个Action的url作为参数,返回这个action的输出,这个结果不是像result的success,而是像FreeMarker, velocity这些模版的结果
getActionProxy(String)构造一个action的代理对象,用来调用execute(),返回action的执行结果像"success"。
getActionMapping(String)返回这个action的映射信息对象
findValueAfterExecute(String)在action执行后,从值栈中根据属性名称取值


几个重要的字段

字段名称描述
MockHttpServletRequest request模拟请求对象,用来设置请求参数
MockHttpServletResponse response可以用这个对象测试输出,响应头信息等
MockServletContext servletContextservlet的上下文

 

  • 大小: 11.7 KB
分享到:
评论

相关推荐

    Struts2SpringUnitDemo单元测试

    Struts2 Spring 框架整合 单元测试 Action和Service http://blog.csdn.net/fansunion/

    测试struts2中action

    测试struts2中的action

    Struts1与Struts2本质区别

    Struts 2 Action不再依赖于Servlet API,从而允许Action脱离Web容器运行,从而降低了测试Action的难度。 当然,如果Action需要直接访问HttpServletRequest和HttpServletResponse参数,Struts 2 Action仍然可以访问...

    Struts2 in action中文版

    第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 1.2.1 什么是框架 7 1.2.2 为什么使用框架 8 1.3 Struts 2框架...

    struts2 拦截器写法

    Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.

    struts中测试action

    struts action struts action struts action struts action

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    moke测试struts的action

    moke moke moke moke moke moke moke

    struts2的测试,配置

    刚学了Struts2,做了一个很简单的实例,就是一个配置好了web.xml,struts.xml。跟一些必要的包,只适合初学者用,访问得输入http://localhost:8080/Struts2/HelloWorld.action

    struts2+spring+hibernate整合示例

    2 将struts2 整合进去, 这次在struts.xml中我们使用通配符的方式配置action。 a 加入支持 : 添加struts2.3.15 必需包 以及 struts json包(ajax要用到),spring整合struts2包,spring web 包,在src目录下建立...

    struts2 和Srping 2.5 整合的测试简单例子

    配置文件 web.xml applicationContext.ml struts.xml Action 类 LoginAction spirng 处理类 LoginServiceImpl 实现LoginService接口

    深入浅出struts2

    Struts2中的Action都是POJO,这一方面增强了Action本身的可测试性,另一方面也减小了框架内部的耦合度,而HTML表单中的输入项都被转换成了恰当的类型以供action使用。开发人员还可以通过拦截器(可以自定义拦截器...

    struts2-junit-plugin-2.1.6.jar

    struts2-junit-plugin-2.1.6.jar struts2测试 action测试 strutstestcase

    Struts2+Spring+Hibernate+Ehcache+AJAX+JQuery+Oracle 框架集成用户登录注册Demo工程

    2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录...

    struts2+spring2+ibates

    2、在sping配置中注意单元测试里,xml文件的路径问题,要用绝对路径。 3、struts.xml中命名空间和拦截器的使用。 4、sqlmapconfig.xml中传入参数和result的设置,只需要将得到的值result映射到有此属性的类对象. 5、...

    详解Struts2中Action访问Servlet API的几种方法

    Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,能更轻松的测试该Action。但如何访问?  Web应用中通常需要访问的Servlet API就是...

    ajax_struts2_上传与下载_无刷新

    3. 在struts2的Action通过2种不同的实现方法返回json格式的字符串。 4. 针对商品实现简单无刷新上传与下载 4. 批量导入数据采用的是导入test文件夹下的测试压缩包upload.rar上传到服务器的临时目录,然后利用WinRar....

    struts项目学习笔记

    Action的execute 默认方法不再与Servlet API耦合,更易测试 支持更多视图技术(JSP(转译java文件,编译成class文件,才可以运行)、(模板技术,html,把数据和模板html一起以流方式输出)FreeMarker、Velocity) 基于AOP...

    深入浅出Struts2(附源码)

    本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...

    Struts2SpringHibernate整合,一个HelloWorld版的在线书店(项目源码+详尽注释+单元测试)

    action:控制层,Struts2的Action,响应前端HTTP请求。 service:业务层,处理业务逻辑。 dao:数据访问层,数据库增删改查接口。 domain:领域实体。 util:工具类。 实体 Book:书籍,一本书,比如“《编写...

Global site tag (gtag.js) - Google Analytics