以前从来没有测试过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 servletContext | servlet的上下文 |
- 大小: 11.7 KB
分享到:
相关推荐
Struts2 Spring 框架整合 单元测试 Action和Service http://blog.csdn.net/fansunion/
测试struts2中的action
Struts 2 Action不再依赖于Servlet API,从而允许Action脱离Web容器运行,从而降低了测试Action的难度。 当然,如果Action需要直接访问HttpServletRequest和HttpServletResponse参数,Struts 2 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拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.
struts action struts action struts action struts action
Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf
moke moke moke moke moke moke moke
刚学了Struts2,做了一个很简单的实例,就是一个配置好了web.xml,struts.xml。跟一些必要的包,只适合初学者用,访问得输入http://localhost:8080/Struts2/HelloWorld.action
2 将struts2 整合进去, 这次在struts.xml中我们使用通配符的方式配置action。 a 加入支持 : 添加struts2.3.15 必需包 以及 struts json包(ajax要用到),spring整合struts2包,spring web 包,在src目录下建立...
配置文件 web.xml applicationContext.ml struts.xml Action 类 LoginAction spirng 处理类 LoginServiceImpl 实现LoginService接口
Struts2中的Action都是POJO,这一方面增强了Action本身的可测试性,另一方面也减小了框架内部的耦合度,而HTML表单中的输入项都被转换成了恰当的类型以供action使用。开发人员还可以通过拦截器(可以自定义拦截器...
struts2-junit-plugin-2.1.6.jar struts2测试 action测试 strutstestcase
2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录...
2、在sping配置中注意单元测试里,xml文件的路径问题,要用绝对路径。 3、struts.xml中命名空间和拦截器的使用。 4、sqlmapconfig.xml中传入参数和result的设置,只需要将得到的值result映射到有此属性的类对象. 5、...
Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,能更轻松的测试该Action。但如何访问? Web应用中通常需要访问的Servlet API就是...
3. 在struts2的Action通过2种不同的实现方法返回json格式的字符串。 4. 针对商品实现简单无刷新上传与下载 4. 批量导入数据采用的是导入test文件夹下的测试压缩包upload.rar上传到服务器的临时目录,然后利用WinRar....
Action的execute 默认方法不再与Servlet API耦合,更易测试 支持更多视图技术(JSP(转译java文件,编译成class文件,才可以运行)、(模板技术,html,把数据和模板html一起以流方式输出)FreeMarker、Velocity) 基于AOP...
本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...
action:控制层,Struts2的Action,响应前端HTTP请求。 service:业务层,处理业务逻辑。 dao:数据访问层,数据库增删改查接口。 domain:领域实体。 util:工具类。 实体 Book:书籍,一本书,比如“《编写...