免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1638 | 回复: 0
打印 上一主题 下一主题

用cactus测试servlet [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-16 17:05 |只看该作者 |倒序浏览
1.  
为了使得项目的开发正规化,准备在3u的这个项目中使用专门的测试工具,经过多方面的比较,最后选择cactus,使用工具eclipse3.3+cactus+junit
   
还有就是这里的配置只是用于测试Servlet的,当然也可以用同样的方法配置其可以测试Filter,Jsp等,不过可能要换一个新一点的Cactus的包。   
   1.解压cactus安装文件到某一目录下
   2.将lib下的jar拷贝到项目\web-inf\lib 下
   3.创建cactus.properties文件,并加入classpath(可选,在这里是为为了可以直接用eclipse的junit进行测试,所以这里还是加上吧)
   4.我需要被测试的类
Java代码

  • package com.test.web;
      
  •   
  • import java.io.FileNotFoundException;
      
  • import java.io.IOException;
      
  •   
  • import javax.servlet.RequestDispatcher;
      
  • // import javax.servlet.ServletContext;
      
  • import javax.servlet.ServletException;
      
  • import javax.servlet.http.HttpServlet;
      
  • import javax.servlet.http.HttpServletRequest;
      
  • import javax.servlet.http.HttpServletResponse;
      
  • import javax.servlet.http.HttpSession;
      
  •   
  • import org.jdom.JDOMException;
      
  •   
  • // import com.ca.website.mainpage.MainPageSupport;
      
  • // import com.error.ErrorProcesser;
      
  • // import com.jem.orm.sql.BsSQLHandler;
      
  • // import com.jem.orm.sql.BsSqlXmlPaser;
      
  • import com.jem.transdata.BsFormData;
      
  • import com.jem.transdata.BsFormTable;
      
  •   
  • // import com.orm.util.SQLStatementIDS;
      
  •   
  • public class LoginEdge extends HttpServlet {   
  •   
  •      public boolean isValidUser(HttpServletRequest request) {
      
  •          String username = request.getParameter("username");   
  •          String password = request.getParameter("password");   
  •          if (username == null || password == null || !username.equals("justin")   
  •                  || !password.equals("123456")) {   
  •              return false;
      
  •          } else {
      
  •              return true;
      
  •          }   
  •      }   
  • }  package com.test.web;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import javax.servlet.RequestDispatcher;
    // import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import org.jdom.JDOMException;
    // import com.ca.website.mainpage.MainPageSupport;
    // import com.error.ErrorProcesser;
    // import com.jem.orm.sql.BsSQLHandler;
    // import com.jem.orm.sql.BsSqlXmlPaser;
    import com.jem.transdata.BsFormData;
    import com.jem.transdata.BsFormTable;
    // import com.orm.util.SQLStatementIDS;
    public class LoginEdge extends HttpServlet {
         public boolean isValidUser(HttpServletRequest request) {
             String username = request.getParameter("username");
             String password = request.getParameter("password");
             if (username == null || password == null || !username.equals("justin")
                     || !password.equals("123456")) {
                 return false;
             } else {
                 return true;
             }
         }
    }
    6.我的测试类
    Java代码

  • package com.test;
      
  •   
  • import org.apache.cactus.ServletTestCase;
      
  • import org.apache.cactus.WebRequest;
      
  • import com.test.web.LoginEdge;
      
  •   
  • public class LoginEdgeTest extends ServletTestCase {   
  •   
  •      public void beginValidUser(WebRequest webRequest) {
      
  •          webRequest.addParameter("username", "justin");   
  •          webRequest.addParameter("password", "123456");   
  •      }   
  •   
  •      public void testValidUser() {   
  •          LoginEdge loginServlet = new LoginEdge();   
  •          assertTrue(loginServlet.isValidUser(request));   
  •      }   
  •   
  •      public void beginInValidUser(WebRequest webRequest) {
      
  •          webRequest.addParameter("username", "guest");   
  •          webRequest.addParameter("password", "guest");   
  •      }   
  •   
  •      public void testInValidUser() {   
  •          LoginEdge loginServlet = new LoginEdge();   
  •          assertFalse(loginServlet.isValidUser(request));
      
  •      }   
  •   
  • }  package com.test;
    import org.apache.cactus.ServletTestCase;
    import org.apache.cactus.WebRequest;
    import com.test.web.LoginEdge;
    public class LoginEdgeTest extends ServletTestCase {
         public void beginValidUser(WebRequest webRequest) {
             webRequest.addParameter("username", "justin");
             webRequest.addParameter("password", "123456");
         }
         public void testValidUser() {
             LoginEdge loginServlet = new LoginEdge();
             assertTrue(loginServlet.isValidUser(request));
         }
         public void beginInValidUser(WebRequest webRequest) {
             webRequest.addParameter("username", "guest");
             webRequest.addParameter("password", "guest");
         }
         public void testInValidUser() {
             LoginEdge loginServlet = new LoginEdge();
             assertFalse(loginServlet.isValidUser(request));
         }
    }
    7.在web.xml需要如下配置
    Xml代码

  • xml version="1.0" encoding="UTF-8"?>  
  • web-app version="2.4"  
  • xmlns="http://java.sun.com/xml/ns/j2ee"  
  • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  • xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
      
  • A href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" target=_blank>http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsdA>">  
  •   
  • servlet>   
      
  • servlet-name>ServletRedirectorservlet-name>        
  • servlet-class>org.apache.cactus.server.ServletTestRedirectorservlet-class>  
  • servlet>     
      
  • servlet>      
      
  • servlet-name>ServletTestRunnerservlet-name>      
  • servlet-class>org.apache.cactus.server.runner.ServletTestRunnerservlet-class>      
  • servlet>         
      
  •   
  • servlet-mapping>     
      
  • servlet-name>ServletRedirectorservlet-name>        
  • url-pattern>/ServletRedirectorurl-pattern>  
  • servlet-mapping>     
      
  • servlet-mapping>     
      
  • servlet-name>ServletTestRunnerservlet-name>      
  • url-pattern>/ServletTestRunnerurl-pattern>     
  • servlet-mapping>  
  •   
  • web-app>  
       
    ServletRedirector     
    org.apache.cactus.server.ServletTestRedirector
       
          
    ServletTestRunner   
    org.apache.cactus.server.runner.ServletTestRunner   
            
       
    ServletRedirector     
    /ServletRedirector
       
       
    ServletTestRunner   
    /ServletTestRunner  
    8.在cactus.properties需要如下配置
    cactus.contextURL =
    http://localhost/3UFAssist
    cactus.servletRedirectorName =
    ServletRedirector
    cactus.enableLogging=true
    9开始测试
    输入以下http://localhost:8080/3UFAssist/ServletTestRunner?suite=com.test.LoginEdgeTest  
    //这里应该是把测试类当作一个suite传给TestRunner来运行,这跟平时用JUnit是一样的。
    将出现测试结果:
    Xml代码

  • xml version="1.0" encoding="UTF-8" ?>  
  • - testsuites>  
  • - testsuite name="com.test.LoginEdgeTest" tests="2" failures="0" errors="0" time="0.625">  
  • testcase name="testValidUser" time="0.5" />  
  • testcase name="testInValidUser" time="0.016" />  
  • testsuite>  
  • testsuites>  
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/77127/showart_1309102.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP