`
agu
  • 浏览: 36970 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

收藏 :关于WebWork2中Action的测试

 
阅读更多

一。不脱离Action配置文件的测试:
[code="java"]
public class TestBaseUploadList extends TestCase {

public void testExecuteSuccess() throws Exception {
Map session = new HashMap();
User user = new UserImpl();
user.setId(1L);
session.put(LoginInterceptor.USER_LOGIN, user);
Map params = new HashMap();
params.put("permissionsManager", new MockPermissionsManager());
Map extraContext = new HashMap();
extraContext.put(ActionContext.SESSION, session);
extraContext.put(ActionContext.PARAMETERS, params);
ActionProxy proxy = ActionProxyFactory.getFactory().createActionProxy(
"/list", "viewUploadList", extraContext, false);
assertEquals(proxy.execute(), "success");
}

public void testExecuteNoPerms() throws Exception {
Map session = new HashMap();
User user = new UserImpl();
user.setId(0L);
session.put(LoginInterceptor.USER_LOGIN, user);
Map params = new HashMap();
params.put("permissionsManager", new MockPermissionsManager());
Map extraContext = new HashMap();
extraContext.put(ActionContext.SESSION, session);
extraContext.put(ActionContext.PARAMETERS, params);
ActionProxy proxy = ActionProxyFactory.getFactory().createActionProxy(
"/list", "viewUploadList", extraContext, false);
assertEquals(proxy.execute(), "nopermission");
}

private class MockPermissionsManager implements PermissionsManager {
public Permissions getFinalUserPerm(long userID) {
return (userID == 1) ? new Permissions(Permissions.UPLOAD_LIST)
: new Permissions(0L);
}
.......
}

}
[/code]
为了使这个测试能通过,要对Jert中的Interceptor"component-autowire"做一些小小的改变:
[code="java"]
public class ComponentAutowireInterceptor implements Interceptor {
   ............
public String intercept(ActionInvocation invocation) throws Exception {
//Jert原来的实现:
//Application.getInstance().getContainer().autowireComponent(invocation.getAction());
if (Application.getInstance().getContainer() != null)
Application.getInstance().getContainer().autowireComponent(invocation.getAction());
return invocation.invoke();
}

}
[/code]

二。脱离Action配件文件的测试:
[code="java"]
public class TestBaseUploadListA extends TestCase {

public void testHasPermission() throws Exception {
Map session = new HashMap();
User user = new UserImpl();
user.setId(1L);
session.put(LoginInterceptor.USER_LOGIN, user);
ActionContext.getContext().setSession(session);
BaseUploadList action = new BaseUploadList();
action.setPermissionsManager(new MockPermissionsManager());
assertTrue(action.hasPermission());
}

public void testNoPermission() throws Exception {
Map session = new HashMap();
User user = new UserImpl();
user.setId(0L);
session.put(LoginInterceptor.USER_LOGIN, user);
ActionContext.getContext().setSession(session);
BaseUploadList action = new BaseUploadList();
action.setPermissionsManager(new MockPermissionsManager());
assertFalse(action.hasPermission());
}

private class MockPermissionsManager implements PermissionsManager {
public Permissions getFinalUserPerm(long userID) {
return (userID == 1) ? new Permissions(Permissions.UPLOAD_LIST)
: new Permissions(0L);
}
..........
}
}
[/code]

原帖地址:http://www.iteye.com/topic/12406

分享到:
评论

相关推荐

    Struts 2 技术详解:基于WebWork核心的MVC开发与实践

    WebWork的这些特性被集成到Struts 2中,使得Struts 2成为了一个高效且易用的MVC框架。 **Struts 2的生命周期**: 1. 用户发起HTTP请求。 2. Struts 2 框架接收到请求,解析请求参数。 3. 拦截器链开始执行,按照...

    webwork2中文文档

    8. **测试与调试**:提供关于单元测试、集成测试和调试WebWork2应用的方法,可能包括JUnit和Mockito的使用。 9. **最佳实践与性能优化**:分享一些开发WebWork2应用的最佳实践,以及如何优化应用程序性能,如减少...

    webWork2开发指南

    2. **Action和ActionForm**:在WebWork2中,Action类是控制器的主要实现,它处理用户请求并调用相应的业务逻辑。ActionForm则作为模型和视图之间的数据载体,用于封装表单提交的数据。 3. **Interceptors(拦截器)...

    Struts 2.1权威指南:基于WebWork核心的MVC开发part9

    Struts 2.1权威指南:基于WebWork核心的MVC开发Struts 2.1权威指南:基于WebWork核心的MVC开发Struts 2.1权威指南:基于WebWork核心的MVC开发

    Struts 2.1权威指南:基于WebWork核心的MVC开发part10

    Struts 2.1权威指南:基于WebWork核心的MVC开发part9Struts 2.1权威指南:基于WebWork核心的MVC开发part9Struts 2.1权威指南:基于WebWork核心的MVC开发part9

    Webwork2_guide

    通过“Webwork2_guide.pdf”,读者将能够深入学习如何利用Webwork2的各种特性,包括Action的设计、拦截器的编写、配置文件的配置、异常处理和测试方法等,从而成为一名熟练的Webwork2开发者。这个指南对于初学者和...

    WebWork2配置

    9. **测试与调试**:WebWork2提供了良好的测试支持,你可以配置Action的模拟对象以进行单元测试,同时通过日志配置来帮助调试。 10. **安全设置**:WebWork2允许你配置安全性相关的设置,如防止XSS攻击、CSRF防护等...

    Struts 2.1权威指南:基于WebWork核心的MVC开发part16

    Struts 2.1权威指南:基于WebWork核心的MVC开发Struts 2.1权威指南:基于WebWork核心的MVC开发 ,

    Struts 2.1权威指南:基于WebWork核心的MVC开发part8

    Struts 2.1权威指南:基于WebWork核心的MVC开发 Struts 2.1权威指南:基于WebWork核心的MVC开发

    webwork2中文教程

    WebWork2的核心设计原则是减少样板代码,提高开发效率,并提供更好的可测试性。 首先,让我们来看看WebWork2的控制器层。WebWork2的动作(Action)是处理用户请求的核心组件,它接收HTTP请求,执行业务逻辑,并将...

    webwork中文帮助文档

    - 尽量保持Action轻量级,避免在Action中包含过多的业务逻辑。 本中文帮助文档将深入讲解以上每个知识点,帮助开发者快速掌握WebWork框架,提升开发效率。无论你是初学者还是经验丰富的开发者,都可以从中找到所需...

    WebWork2 开发指南

    2. 动作(Action):在WebWork2 中,动作是控制器的主要组成部分,它接收HTTP请求,执行相应的业务逻辑,并决定返回哪个视图。 3. 属性(Properties):每个动作都有一个或多个属性,这些属性可以映射到HTTP请求...

    webwork2实例源代码

    2. **Action映射**:在WebWork2中,Action映射定义了URL请求如何映射到特定的Action类和方法。通过XML配置文件(如webwork.xml或struts-config.xml)或注解,我们可以设置URL模式、参数、拦截器等,实现灵活的路由。...

    webwork2官方文档中文版

    8. **版本控制**:文档中可能涵盖关于如何使用版本控制来管理WebWork2应用,以及与Subversion、Git等工具的集成。 9. **测试工具**:WebWork2提供了单元测试和集成测试的支持,便于开发者进行质量保证。 10. **...

    Struts 2权威指南:基于WebWork核心的MVC开发

    Struts 2作为一个基于WebWork核心的MVC框架,在继承了WebWork优点的同时,也解决了Struts 1中存在的许多问题,如复杂的配置和表单验证等。它不仅提高了Web应用的开发效率和质量,还具备良好的稳定性和性能表现,是...

    程序天下-Struts 2技术详解:基于WebWork核心的MVC开发与实践(原代码)

    学习了解Struts2很好的资料,这是原代码,分成两个压缩包.

    webwork2开发指南

    1. 安装配置:首先,需要在项目中引入WebWork2的依赖库,配置web.xml文件以启动WebWork2的Servlet。然后,创建一个基本的动作类,并在actions.xml文件中进行映射。 2. 创建第一个动作:创建一个简单的Java类,继承...

    Struts 2.1权威指南:基于WebWork核心的MVC开发

    李刚的Struts 2.1权威指南:基于WebWork核心的MVC开发,写的很详细。一共有九个压缩文件。

    webwork in action

    1. **创建Action类**:在WebWork中,Action类是处理HTTP请求的核心。这些类通常继承自`com.opensymphony.xwork2.Action`接口,并实现其方法。 2. **配置Action**:通过`web.xml`和`struts.xml`文件配置Action,指定...

Global site tag (gtag.js) - Google Analytics