webwork2的测试

webwork2分为webwork和xwork,通过webwork和xwork的解耦,我们的测试已经可以脱离HTTP协议了

比如我们有一个简单的用户注册功能,

Domain Object: User类

Business Object: UserDao类

Action :RegisterAction

java 代码
  1. package mypackage;   
  2.   
  3. public class User {   
  4.     private String username;   
  5.     private String password;   
  6.     private String age;   
  7.     private String tel;   
  8.     User(){   
  9.            
  10.     }   
  11.     public String getAge() {   
  12.         return age;   
  13.     }   
  14.     public void setAge(String age) {   
  15.         this.age = age;   
  16.     }   
  17.     public String getPassword() {   
  18.         return password;   
  19.     }   
  20.     public void setPassword(String password) {   
  21.         this.password = password;   
  22.     }   
  23.     public String getTel() {   
  24.         return tel;   
  25.     }   
  26.     public void setTel(String tel) {   
  27.         this.tel = tel;   
  28.     }   
  29.     public String getUsername() {   
  30.         return username;   
  31.     }   
  32.     public void setUsername(String username) {   
  33.         this.username = username;   
  34.     }   
  35. }   

UserAction:

java 代码
  1. package mypackage;   
  2.   
  3. import com.opensymphony.xwork.Action;   
  4. public class UserAction implements Action {   
  5.   
  6.     private User user = new User();   
  7.   
  8.     public String execute() throws Exception {   
  9.   
  10.         System.out.println("begin execute!......");   
  11.         UserDao.saveUser(user);   
  12.         return SUCCESS;   
  13.     }   
  14.   
  15.     public User getUser() {   
  16.   
  17.         return user;   
  18.     }   
  19. }   
java 代码
  1. package mypackage;   
  2. public class UserDao {   
  3.   
  4.     public static void saveUser(User user) {   
  5.               System.out.println("save User");   
  6.      }   
  7.   
  8. }  

 

如果是平时测试,可能需要打开web server来测试,但是由于webwork2采用xwork核心,它不与特定的面向HTTP的Servlet发生关联,所以我们测试的时候完全不需要打开web服务器,我们只需要提供一个map就可以达到测试的要求

java 代码
  1. package test;   
  2.   
  3. import java.util.HashMap;   
  4. import java.util.Map;   
  5. import junit.framework.TestCase;   
  6. import com.opensymphony.xwork.ActionProxy;   
  7. import com.opensymphony.xwork.ActionProxyFactory;   
  8.   
  9. public class TestWebWork extends TestCase {   
  10.   
  11.     Map items;   
  12.   
  13.     protected void setUp() throws Exception {   
  14.         super.setUp();   
  15.         items = new HashMap();   
  16.         items.put("user.username""sanyun");   
  17.         items.put("user.password""123456");   
  18.     }   
  19.   
  20.     public void testWebwork() throws Exception {   
  21.         ActionProxyFactory factory = ActionProxyFactory.getFactory();   
  22.         // 第一个参数表示namesapce   
  23.         // 第二个参数表示action name   
  24.         // 第三个参数表示是否执行返回的结果,如果result返回是action就可能需要再次执行,这里就不需要   
  25.         // 第三个参数表示是否清理Context   
  26.         ActionProxy proxy = factory.createActionProxy("default""register",   
  27.                 items, falsetrue);   
  28.         //  执行action,控制台会打印 begin execute!......表示Action确实执行了   
  29.         String result = proxy.execute();   
  30.         String uaername = (String) proxy.getInvocation().getStack().findValue(   
  31.                 "user.username");   
  32.         String passwork = (String) proxy.getInvocation().getStack().findValue(   
  33.                 "user.password");   
  34.            
  35.         assertEquals("success", result);   
  36.         assertEquals("sanyun", uaername);   
  37.         assertEquals("123456", passwork);   
  38.     }   
  39.   
  40.     protected void tearDown() throws Exception {   
  41.         super.tearDown();   
  42.     }   
  43.   
  44. }   

这里没有看不到一个HttpServletRequest, HttpServletResponse,因为xwork不会和特定的Servlet打交道(也许是FTP,JMS,都有可能),webwork才会和具体的HttpServlet打交道 webwork通过com.opensymphony.webwork.dispatcher.FilterDispatcher把application,session,parameter,等等都放在一个HashMap中,以后在xwork中就只会操作map里面的数据了

配置文件:必须放在classpath的根目录下

xml 代码
  1. <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN"    
  2. "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">  
  3. <xwork>  
  4.     <include file="webwork-default.xml" />    
  5.     <package name="default" extends="webwork-default">     
  6.   
  7.         <action name="register" class="mypackage.RegisterAction">  
  8.             <interceptor-ref name="params"/>  
  9.             <result name="success" >success.jsp</result>  
  10.                
  11.         </action>  
  12.            
  13.     </package>  
  14. </xwork>  

简单说明:package name就是 namespace,interceptor-ref表示拦截器,,webwork使用拦截器来实现控制反转.,比如  对于每个action都有可能需要获取请求页面的参数,记录日志,等等,这些任务并不和本身的业务逻辑沾边, 我们把这些系统级的任务称为基础设施,我们可以把这些基础设施抽象出来,如果我们的客户程序需要用到获取请求页面的功能,只需要在配置文挡里面配置就可以了,客户程序不需要显示的调用getParameter("username"),这就是为什么我们Action里面没有这些方法的原因了. 拦截器是通过动态代理来实现的.

最后需要配置web.xml,主要是把com.opensymphony.webwork.dispatcher.FilterDispatcher设置成前端分发器,处理所有的页面请求而已.

xml 代码
  1. <?xml version="1.0" encoding="ISO-8859-1"?>  
  2. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN"   
  3. "http://java.sun.com/dtd/web-app_2_3.dtd">  
  4. <web-app>  
  5.   
  6.     <display-name>Acme Corp</display-name>  
  7.     <filter>  
  8.         <filter-name>webwork</filter-name>  
  9.         <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher   
  10.         </filter-class>  
  11.     </filter>  
  12.   
  13.     <filter-mapping>  
  14.         <filter-name>webwork</filter-name>  
  15.         <url-pattern>/*</url-pattern>  
  16.     </filter-mapping>  
  17.   
  18. </web-app>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
大学生在线租房平台管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、报修评价管理、字典管理、房东管理、房屋管理、房屋收藏管理、房屋留言管理、房屋租赁管理、租房论坛管理、公告信息管理、留言板管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生在线租房平台管理系统可以提高大学生在线租房平台信息管理问题的解决效率,优化大学生在线租房平台信息处理流程,保证大学生在线租房平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理大学生在线租房平台信息,包括房屋管理,培训管理,报修管理,薪资管理等,可以管理公告。 房屋管理界面,管理员在房屋管理界面中可以对界面中显示,可以对房屋信息的房屋状态进行查看,可以添加新的房屋信息等。报修管理界面,管理员在报修管理界面中查看报修种类信息,报修描述信息,新增报修信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值