cactus测试servlet

为了使得项目的开发正规化,准备在3u的这个项目中使用专门的测试工具,经过多方面的比较,最后选择cactus,使用工具eclipse3.1.1+cactus+junit 
   1.解压cactus安装文件到某一目录下

   2.将lib下的jar拷贝到项目\web-inf\lib 下

   3.创建cactus.properties文件,并加入classpath(可选,在这里是为为了可以直接用eclipse的junit进行测试,可用eclipse配置路径)

   4.我需要被测试的类



/*
* 创建日期 2005-12-9
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - 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 {


      * 测试 by wst
      * @param request
      * @return
      */
     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.我的测试类

/* 
* 创建者   wst302

* 创建日期 2006-1-10
*
* 文档作用:测试登陆

* 版本:

*/
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 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 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<servlet>   
<servlet-name>ServletRedirector<servlet-name>     
<servlet-class>org.apache.cactus.server.ServletTestRedirector<servlet-class> 
<servlet>    
<servlet>      
<servlet-name>ServletTestRunner<servlet-name>   
<servlet-class>org.apache.cactus.server.runner.ServletTestRunner<servlet-class>   
<servlet>        

<servlet-mapping>    
<servlet-name>ServletRedirector<servlet-name>     
<url-pattern>/ServletRedirector</url-pattern>
<servlet-mapping>    
<servlet-mapping>    
<servlet-name>ServletTestRunner<servlet-name>    
<url-pattern>/ServletTestRunner</url-pattern>  
<servlet-mapping>
<!--Test by wst -->
</web-app>
8.在cactus.properties需要如下配置

cactus.contextURL = http://localhost/3UFAssist

cactus.servletRedirectorName = ServletRedirector 

cactus.enableLogging=true

9开始测试

输入以下http://localhost/3UFAssist/ServletTestRunner?suite=com.test.LoginEdgeTest

将出现测试结果:

<?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>




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=575360
 

 

 

1.  基于测试方法的名字,ServletTestCase将在TestCase中寻找并执行名为beginXxx的方法; 

2.  在beginXxx方法执行完成之后,ServletTestCase打开一个与转向器servlet的HTTP连接。除了发送在begionXxx中增加的任何请求参数,Cactus发送一些内部参数来指定在服务器上执行哪一个测试(和哪一个方法)。 
           

3.   当转向器servlet收到请求,它检查内部参数并实例化一个服务器中正确测试案例的新拷贝。一旦其类被实例化,转向器servlet使用反射来复制标准的servlet变量request,response等等)到新的测试案例实例中。                  


4.  一旦服务器端测试案例被完全初始化,服务器端执行即开始。其setUp(),testXxx()和testDown()方法在此时被执行。(注意这些方法只在测试案例的拷贝中才被执行,这些测试案例运行在服务器上。) 
           

5.   一旦测试完成了执行过程,在客户端的测试拷贝向转向器servlet发出另一个请求以询问测试结果。其转向器servlet从应用程序的scope变量中既得结果,并发送到 

     客户端。如果任何异常或者失败保存在结果中,它们将被重新招聘,使JUnit测试运行器正常地对它们进行日志记录。如果结果返回成功,客户端将执行一个最后的endXxx方法。 

     endXxx方法得到一个WebResponse参数。WebResponse对象包含了任何写向客户端的响应数据。endXxx能使用WebResponse对象的方法对响应的内容执行断言。测试执行在endXxx返回结果后表示完成。

你可能感兴趣的:(cactus测试servlet)