`
flash7783
  • 浏览: 308353 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

Eclipse IDE下 Cactus + Jetty 对 Servlet 的测试

阅读更多

在开发J2EE Web项目时,测试过程常涉及到代码与Web Container的整合测试。测试过程通常分为:开发、部署、测试、修改四个环节。其中部署环节繁琐,大大降低了测试效率。
 
这里介绍使用Cactus+Jetty的测试方法,以期缩短部署环节,提高整体测试及开发效率。本文内容建构于Vincent Massol的《JUnit In Action》(Manning 2004)、网友Blog以及自己的实践。
 
Cactus 是Apache 基金会的开源项目之一,是JUnit测试在Web 应用方面的扩展。其官方文档称其功能可以涵盖主要的三类测试框架,包括:单元逻辑测试、整合单元测试及功能单元测试,其主要用途集中与J2EE环境下的整合单元测试(见:http://jakarta.apache.org/cactus/)。
 
使用过Eclipse的朋友一定体验过在Eclipse环境下使用JUnit的方便。Cactus是对JUnit的扩展,在Eclipse环境下的界面和JUnit框架一致,所以如果你熟悉JUnit界面,使用Cactus也很容易。
 
Jetty是一款纯Java开发的Web 应用服务器,这点和tomcat相似。但Jetty比tomcat使用更方便,可以嵌入代码中,以编程式的方式手动启动。这就免去了使用者手工启动Web服务的麻烦,为全自动测试提供了基础(关于Jetty 可从http://docs.codehaus.org/display/JETTY
获取更详细的信息)。
 
现在开始测试框架的搭建。
 
一.创建测试项目
首先打开Eclipse,创建一个新的Web项目。如果存在已有的Web项目,步骤也大致相同。

为了首先测试代码与业务代码的分离,我的项目接受了JUnit In Action中的建议,采用“分离但等同”的目录结构,既测试类和被测试代码在同一个包内,却分到不同的目录中。这样做的好处在于,如果项目开发完成,可以很快的从项目中分离测试代码,加快发布速度。
 
在这里,我创建了一个新的Source Folder test来存放测试类文件,系统自建的src目录存放被测试代码。
 
另外,为了能够使用Cactus及Jetty框架,需要将相应的库文件导入项目的库中。具体步骤如下:
1.       导入以下jar包:
junit-3.8.1.jar (JUint 类库)
aspectjrt-1.2.1.jar
cactus-1.7.2.jar      (Cactus 主要类库)
commons-httpclient-2.0.2.jar
commons-logging-1.0.4.jar
org.mortbay.jetty-4.2.17.jar   (Jetty 的主要类库,建议使用cactus提供的,笔者曾经尝试过最新的Jetty 6.1 但没有整合成功)
servletapi-2.3.jar     (支持 J2EE Servlet 库文件)
到项目的WEB-INF/lib/下。

注意,根据所使用版本Cactus及JUnit的版本不同,文件命会有相应的不同。
 
2.       在Eclipse中刷新项目。
 
具体生成后的目录结构如下:
 
二.创建Servlet类及测试类
1.在src/defaultpackage中,创建被测试的servlet类SampleServlet:
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
 
public class SampleServlet extends HttpServlet {
       /**
        *
        */
       private static final long serialVersionUID = 1L;
 
       public void saveToSession(HttpServletRequest request) {
              String testparam = request.getParameter("testparam");
              request.getSession().setAttribute("testAttribute", testparam);
       }
 
}

2. 在test/defaultpackage中,创建测试类ServletTestCase:
import junit.framework.Test;
import junit.framework.TestSuite;
 
import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;
import org.apache.cactus.extension.jetty.JettyTestSetup;
 
public class TestSampleServlet extends ServletTestCase {
       public TestSampleServlet(String theName) {
              super(theName);
       }
 
       public static Test suite() {
              System.setProperty("cactus.contextURL",
                     "http://localhost:8081/Cactus");
              TestSuite suite = new TestSuite();
              suite.addTestSuite(TestSampleServlet.class);
              return new JettyTestSetup(suite);
       }
 
       public void beginSaveToSessionOK(WebRequest webRequest) {
              webRequest.addParameter("testparam", "it works!");
       }
 
       public void testSaveToSessionOK() {
              SampleServlet servlet = new SampleServlet();
              servlet.saveToSession(request);
              assertEquals("it works!", session.getAttribute("testAttribute"));
       }
 
}
 
注意其中“System.setProperty("cactus.contextURL",      "http://localhost:8081/Cactus");”语句,该语句设置了Cactus启动Jetty服务器时,jetty服务器所开设服务的URL。这个值就是web服务供外界访问的URL地址。另外,这个值也可以通过Eclipse设置JUnit启动参数的方法设置,在此不再赘述。
 
三.测试
在Eclipse中运行JUnit。
 
查看输出结果:

及输出日志:


 
好了,这个简单的例子就讲到这里。随着对Web测试研究的深入,我会发布更多的文章和大家一起探讨。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/james_wu_shanghai/archive/2008/03/11/2167503.aspx

  • 大小: 41.8 KB
  • 大小: 36.3 KB
  • 大小: 19.7 KB
  • 大小: 34 KB
  • 大小: 88.7 KB
  • 大小: 30.4 KB
  • 大小: 57.3 KB
分享到:
评论

相关推荐

    使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3

    本项目"使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3"正是针对这一目标进行的实践。下面将详细介绍这些技术及其在测试中的应用。 **EJB(Enterprise JavaBeans)** 是Java平台上的企业级组件...

    使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试4

    JMeter是Apache组织开发的一款性能测试工具,它可以模拟大量并发用户对服务器进行压力测试,检查系统在高负载下的稳定性和性能瓶颈。JMeter支持多种协议,包括HTTP、FTP、JDBC等,非常适合测试Web应用的性能和稳定性...

    使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试2

    本项目利用一系列强大的工具,如EJB(Enterprise JavaBeans)、Struts 1.3、Ant构建工具、Cactus测试框架、DbUnit数据库单元测试工具、JMeter性能测试工具以及StrutsTest扩展,来实现一个全面的测试流程。...

    cactus的学习笔记(一)

    3. 配置Servlet容器:根据所使用的Servlet容器(如Tomcat、Jetty等),配置Cactus插件或者设置相应的系统属性。 编写Cactus测试用例时,你需要继承自Cactus提供的基类,如`org.apache.cactus.ServletTestCase`。...

    jakarta-cactus-12-1.7.1.rar

    - **Servlet桥接**:Cactus通过创建一个特殊的Servlet,将测试请求转发给被测试的Servlet,然后返回结果,实现服务器端的单元测试。 - **集成测试**:Cactus不仅限于单元测试,还能进行集成测试,验证不同组件之间...

    cactus-源码.rar

    2. **Servlet Adapters**:针对不同的Servlet容器,Cactus提供了适配器,如Tomcat、Jetty等,这些适配器确保Cactus能在各种环境中正常工作。 3. **Test Framework**:Cactus的测试框架提供了丰富的注解,如`@Test`...

    cactus-1.8.1-bin.zip

    由于Web应用的复杂性,直接对它们进行单元测试可能很困难,这就是Cactus发挥作用的地方。 Cactus将测试代码集成到服务器内部,使得能够直接在服务器环境中运行测试,从而解决了Web应用单元测试的挑战。这种做法减少...

    测试实践:Eclipse 之 JUnit

    3. **集成测试**(Integration Tests):检查不同组件间的交互,可能需要特定的测试环境,例如预置测试数据,有时会使用如Cactus这样的J2EE集成库。 4. **开发测试**(Developer's Tests):开发者用于验证新代码或...

    基于Junit的测试组件cactus

    Cactus是一个基于JUnit框架的简单测试框架,用来单元测试服务端Java代码。Cactus框架的主要目标是能够单元测试服务端的使用Servlet对象的Java方法如HttpServletRequest,HttpServletResponse,HttpSession等

    org.apache.cactus.eclipse.runner-1.8.0.jar

    org.apache.cactus.eclipse.runner-1.8.0.jar

    Cactus,MVC权限后台加上一个CMS

    通过这种方式,Cactus能实现对不同用户访问资源的精细控制,确保系统的安全性。权限管理通常涉及到登录认证、授权以及会话管理等环节。 CMS系统是Cactus的另一个关键特性。CMS允许非技术人员创建、编辑和管理网站...

    Developing and Unit Testing with Cactus

    Cactus是Apache Software Foundation(ASF)Jakarta项目下的一个开源子项目,主要功能在于提供一种简单且高效的框架来对服务器端的Java代码进行单元测试。这包括但不限于Servlets、EJBs、TagLibs、Filters等组件。...

    CACTUS

    CACTUS是一个与字体设计相关的主题。在计算机和图形设计领域,字体是至关重要的元素,它们不仅用于传达信息,还对整体视觉效果产生深远影响。"CACTUS"可能指的是一个特定的字体系列、字体库或者一个与仙人掌主题相关...

    6-Cactus.rar

    提到“需要的同学可以看看”,这暗示了该文件可能与教育、学习或共享资源有关,适合对Cactus(仙人掌)主题有兴趣或者正在学习相关知识的学生或爱好者。 由于标签和压缩包子文件的文件名称列表只给出了"6-Cactus",...

    Python-Cactus设计师设计的静态站点生成器

    **Python-Cactus设计师设计的静态站点生成器** Python-Cactus是一款专为设计师打造的静态站点生成器,它基于Python编程语言,并采用了强大的Django模板引擎。Cactus的主要目的是简化静态网站的创建流程,使得设计师...

    Wrox.Press.Professional.Java.Tools.for.Extreme.Programming.eBook-LiB.part3

    The Extreme Programming (XP) methodology enables you to build and test ...How to harness plugins for JUnit, Cactus, and Ant in the Eclipse IDE Ways to implement Extreme Programming best practices

    Wrox.Press.Professional.Java.Tools.for.Extreme.Programming.eBook-LiB.part4

    The Extreme Programming (XP) methodology enables you to build and test ...How to harness plugins for JUnit, Cactus, and Ant in the Eclipse IDE Ways to implement Extreme Programming best practices

    Professional Java Tools for Extreme Programming (JAVA经典书籍英文版)_part2

    The Extreme Programming (XP) methodology enables you to build and test ...How to harness plugins for JUnit, Cactus, and Ant in the Eclipse IDE Ways to implement Extreme Programming best practices

    Professional Java Tools for Extreme Programming (JAVA经典书籍英文版)_part1

    The Extreme Programming (XP) methodology enables you to build and test ...How to harness plugins for JUnit, Cactus, and Ant in the Eclipse IDE Ways to implement Extreme Programming best practices

Global site tag (gtag.js) - Google Analytics