资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 编程开发 >
Advertisement
文章正文

集成测试Strtus+Spring+Hibernate _编程

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   
  • 9.1 Eclipse的WEB环境的搭建  
  • 基于NIO实现客户端通过HTTP协议访问WEB站点  
  • hibernate配置文件  
  • Oracle JDBC2.0 数据来源(Data Source)与连接池(Connection Pool)  
  • 解读JDO规范之ORM(二)  
  • resin3.0.10 入门 基本配置  
  • (强烈推荐)java连接oracle数据库的各种方法及java在数据库中的含义(SunnyXu原创)  
  • WebWork服务器端Validation的实现.  
  • 用DynaBean减除不必要的VO和FormBean  
  • 在iterate标签内部使用indexed属性  
  • 页面导航:

    正文内容:

    spring和hibernate利用junit进行测试,大家已经很熟悉.

    struts则利用strutstest测试.

    下面我们测试一个登录的struts程序

    loginform.java 文件

    package com.bcxy.struts.form;

    import javax.servlet.http.httpservletrequest;

    import org.apache.struts.action.actionerrors;
    import org.apache.struts.action.actionform;
    import org.apache.struts.action.actionmapping;

    public class loginform extends actionform {

     private string user;

     private string pass;

     /**
      * returns the user.
      * @return string
      */
     public string getuser() {
     return user;
     }

     /**
      * set the user.
      * @param user the user to set
      */
     public void setuser(string user) {
     this.user = user;
     }

     /**
      * returns the pass.
      * @return string
      */
     public string getpass() {
     return pass;
     }

     /**
      * set the pass.
      * @param pass the pass to set
      */
     public void setpass(string pass) {
     this.pass = pass;
     }

    }

    loginaction.java 文件

    package com.bcxy.struts.action;

    import javax.servlet.http.httpservletrequest;
    import javax.servlet.http.httpservletresponse;

    import org.apache.struts.action.action;
    import org.apache.struts.action.actionform;
    import org.apache.struts.action.actionforward;
    import org.apache.struts.action.actionmapping;

    import com.bcxy.struts.form.loginform;

    public class loginaction extends action {

     /**
      * method execute
      * @param actionmapping mapping
      * @param actionform form
      * @param httpservletrequest request
      * @param httpservletresponse response
      * @return actionforward
      * @throws exception
      */
     public actionforward execute(
     actionmapping mapping,
     actionform form,
     httpservletrequest request,
     httpservletresponse response)
     throws exception {
     loginform loginform = (loginform) form;
     string user = loginform.getuser();
     string pass = loginform.getpass();
     
     if(user.equals(pass)){
     return mapping.findforward("success");
     }else{
     return mapping.findforward("fail");
     }
     }

    }

    struts-config.xml 文件

    <?xml version="1.0" encoding="utf-8"?>
    <!doctype struts-config public "-//apache software foundation//dtd struts configuration 1.1//en" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
    <struts-config>
     
      <!-- ========== data source configuration =============================== -->
      <data-sources />
     
      <!-- ========== form bean definitions ================================== -->
      <form-beans>
      <form-bean name="loginform" type="com.bcxy.struts.form.loginform">
       <form-property name="user" type="java.lang.string" />
       <form-property name="pass" type="java.lang.string" />
      </form-bean>
      </form-beans>
     
      <!-- ========== global exception definitions ============================== -->
      <global-exceptions />
     
      <!-- ========== global forward definitions =============================== -->
      <global-forwards />
     
      <!-- ========== action mapping definitions =============================== -->
      <action-mappings>
       <action
       type="com.bcxy.struts.action.loginaction"
       name="loginform"
       path="/login"
       scope="request"
       validate="false">
       <forward name="success" path="/success.jsp"/>
       <forward name="fail" path="/fail.jsp"/>
       </action>
       
      </action-mappings>
      <!-- ========== controller configuration ================================ -->
      <controller />
     
      <!-- ========== message resources definitions ============================ -->
     
      <!-- ========== plug ins configuration ================================= -->
      <message-resources parameter="com.bcxy.struts.applicationresources" />
    </struts-config>

    下面我们写一个测试文件,它继承strtustest的mockstrutstestcase类.

    /*
     * created on 2004-10-31
     *
     */
    package test;

    import java.io.file;

    import servletunit.struts.mockstrutstestcase;

    /**
     * @author ezerg
     */
    public class logintest extends mockstrutstestcase {

     public logintest() {
     super();
     }

     /**
      * @param arg0
      */
     public logintest(string arg0) {
     super(arg0);
     }
     
     public void setup() throws exception{
     super.setup();
     //指明web应用的根
     file context = new file("defaultroot");
     setcontextdirectory(context);
     }
     
     public void teardown() throws exception{
     super.teardown();
     }
     
     public void testlogin(){
     //设置action的path
     setrequestpathinfo("/login.do");
     //准备所需要的参数
     addrequestparameter("user", "test");
     addrequestparameter("pass", "test");
     //执行
     actionperform();
     //验证返回的forward
     verifyforward("success");
     }

    }

    在eclipse中执行run as junit test可看到结果....

    主要函数和作用:

    -  setcontextdirectory,设置web应用的根

    -  setrequestpathinfo,设置request的请求

    -  addrequestparameter,将参数和对应的值加入request中

    -  actionperform,执行这个请求

    -  verifyforward,验证forward的名字是否正确

    -  verifyforwardpath,验证forward的path是否正确

    -  verifynoactionerrors,验证在action执行过程中没有actionerror产生

    -  verifyactionerrors,验证在action执行过程中产生的actionerror集合的内容

     

     测试tile。其基本过程与上面类似,不同之处在于验证:使用verifytilesforward和verifyinputtilesforward。

     测试子模块。其基本过程也和上面一样,不同之处在于需要指定该模块所需要使用的struts-config.xml和调用方式:

    -  首先,指定所需要的struts-config.xml:

    setconfigfile("mymodule","/web-inf/struts-config-mymodule.xml");

    -  其次,指明调用的路径:

    setrequestpathinfo("/mymodule","/login.do");

      使用strutstest需要注意的地方:

    -  在testcase中可以访问request、session等对象,strutstest为我们提供了访问接口。

    -  junit的assert函数和fail函数都可以在strutstest中使用。

    -  对于文件上载,目前strutstest并没有什么特别好的方案。具体参见strustest的faq。




    下载地址:http://sourceforge.net/projects/strutstestcase/



     

     
    热门推荐笔记本: IBM笔记本
    相关文章:
    webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
    ©2007 popbb.net All Rights Reserved