一。不脱离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
分享到:
相关推荐
WebWork的这些特性被集成到Struts 2中,使得Struts 2成为了一个高效且易用的MVC框架。 **Struts 2的生命周期**: 1. 用户发起HTTP请求。 2. Struts 2 框架接收到请求,解析请求参数。 3. 拦截器链开始执行,按照...
8. **测试与调试**:提供关于单元测试、集成测试和调试WebWork2应用的方法,可能包括JUnit和Mockito的使用。 9. **最佳实践与性能优化**:分享一些开发WebWork2应用的最佳实践,以及如何优化应用程序性能,如减少...
2. **Action和ActionForm**:在WebWork2中,Action类是控制器的主要实现,它处理用户请求并调用相应的业务逻辑。ActionForm则作为模型和视图之间的数据载体,用于封装表单提交的数据。 3. **Interceptors(拦截器)...
Struts 2.1权威指南:基于WebWork核心的MVC开发Struts 2.1权威指南:基于WebWork核心的MVC开发Struts 2.1权威指南:基于WebWork核心的MVC开发
Struts 2.1权威指南:基于WebWork核心的MVC开发part9Struts 2.1权威指南:基于WebWork核心的MVC开发part9Struts 2.1权威指南:基于WebWork核心的MVC开发part9
通过“Webwork2_guide.pdf”,读者将能够深入学习如何利用Webwork2的各种特性,包括Action的设计、拦截器的编写、配置文件的配置、异常处理和测试方法等,从而成为一名熟练的Webwork2开发者。这个指南对于初学者和...
9. **测试与调试**:WebWork2提供了良好的测试支持,你可以配置Action的模拟对象以进行单元测试,同时通过日志配置来帮助调试。 10. **安全设置**:WebWork2允许你配置安全性相关的设置,如防止XSS攻击、CSRF防护等...
Struts 2.1权威指南:基于WebWork核心的MVC开发Struts 2.1权威指南:基于WebWork核心的MVC开发 ,
Struts 2.1权威指南:基于WebWork核心的MVC开发 Struts 2.1权威指南:基于WebWork核心的MVC开发
WebWork2的核心设计原则是减少样板代码,提高开发效率,并提供更好的可测试性。 首先,让我们来看看WebWork2的控制器层。WebWork2的动作(Action)是处理用户请求的核心组件,它接收HTTP请求,执行业务逻辑,并将...
- 尽量保持Action轻量级,避免在Action中包含过多的业务逻辑。 本中文帮助文档将深入讲解以上每个知识点,帮助开发者快速掌握WebWork框架,提升开发效率。无论你是初学者还是经验丰富的开发者,都可以从中找到所需...
2. 动作(Action):在WebWork2 中,动作是控制器的主要组成部分,它接收HTTP请求,执行相应的业务逻辑,并决定返回哪个视图。 3. 属性(Properties):每个动作都有一个或多个属性,这些属性可以映射到HTTP请求...
2. **Action映射**:在WebWork2中,Action映射定义了URL请求如何映射到特定的Action类和方法。通过XML配置文件(如webwork.xml或struts-config.xml)或注解,我们可以设置URL模式、参数、拦截器等,实现灵活的路由。...
8. **版本控制**:文档中可能涵盖关于如何使用版本控制来管理WebWork2应用,以及与Subversion、Git等工具的集成。 9. **测试工具**:WebWork2提供了单元测试和集成测试的支持,便于开发者进行质量保证。 10. **...
Struts 2作为一个基于WebWork核心的MVC框架,在继承了WebWork优点的同时,也解决了Struts 1中存在的许多问题,如复杂的配置和表单验证等。它不仅提高了Web应用的开发效率和质量,还具备良好的稳定性和性能表现,是...
学习了解Struts2很好的资料,这是原代码,分成两个压缩包.
1. 安装配置:首先,需要在项目中引入WebWork2的依赖库,配置web.xml文件以启动WebWork2的Servlet。然后,创建一个基本的动作类,并在actions.xml文件中进行映射。 2. 创建第一个动作:创建一个简单的Java类,继承...
李刚的Struts 2.1权威指南:基于WebWork核心的MVC开发,写的很详细。一共有九个压缩文件。
1. **创建Action类**:在WebWork中,Action类是处理HTTP请求的核心。这些类通常继承自`com.opensymphony.xwork2.Action`接口,并实现其方法。 2. **配置Action**:通过`web.xml`和`struts.xml`文件配置Action,指定...