`
our651
  • 浏览: 6088 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

Cactus工作原理

阅读更多

Cactus 是Jakarta的子项目之一,是对JUnit的一个扩展。Catus是Java EE容器内测试的事实标准。

Cactus是针对集成单元测试的开源框架。可以在容器内对JAVA EE服务器端组件(如JSP,Servlet,EJB,数据库等)进行细粒度的单元测试。

o_Cactus生命周期.jpg
Cactus测试的生命周期

Cactus测试会创建两个TestCase,一个在客户端,另一个在服务器端。两个TestCase分别由各自的TestRunner执行。还有创建一个proxy redirector对象,这个对象实现了Cactus的逻辑。

Cactus测试分为在客户端JVM和服务器端JVM(也就是在容器内)两个方面的测试。

第一步 - 执行beginXXX
      这一步是在客户端 中运行。
      当存在beginXXX 方法时,将自动执行。这个方法的作用是准备提供给服务端redirector的信息。传递的信息是HTTP相关参数,比如HTTP报文头部,cookie等等。也就是设置这个测试需要的一些参数。
      这是在客户端TestCase创建后调用。

第二步 - 打开redirector连接
      这一步就是服务器和客户端进行连接。在第一步中准备的一些参数在这一步传递给服务器端的redirector。当然这是在Cactus的redirector对象创建后执行。

第三步 - 创建服务器端的TestCase实例
      这一步是在服务器端 执行。
      redirector对象会创建一个服务器端的TestCase实例。获得容器对象后通过设置类变量赋给TestCase实例。

第四步 - 在服务器端进行测试
      在服务器端启动测试,调用JUnit的一系列方法(setUp,testXXX ,tearDown等),并把测试结果保存到一个ServletConfig servlet对象中。

第五步 - 执行endXXX  
      这一步是在客户端在获得来自redirector的响应后执行。
      执行这个方法,作用是对比测试结果是否与预期相同,也就是对获得的测试结果进行断言。

第六步 - 收集测试结果
      这一步就是把服务端的测试结果返回到客户端。
      在Cactus生命周期的最后,总结客户端的测试所得的返回信息(第五步)和服务端中执行的结果(第四步),运行TestRunner把测试结果显示出来。到此Cactus完成任务。

   以 上的Cactus的生命周期,测试驱动开发过程中不必关注,其中的复杂性被封装在Cactus框架中。对于开发者只需扩展Cactus中的 TestCase(如JSPTestCase,ServletTestCase等等),在其中编写初始化方法设置参数,测试方法即可。

分享到:
评论

相关推荐

    cactus的学习笔记(一)

    在学习Cactus的过程中,首先要理解它的基本工作原理。Cactus通过将测试代码插入到服务器端的Servlet容器中,使得测试可以直接作用于实际运行环境中的代码,确保了测试的真实性和完整性。这与JUnit等传统的单元测试...

    有向cactus判定的证明

    本文旨在通过对有向Cactus图的特性进行深入分析,提出一种高效的判定算法,该算法基于深度优先搜索(DFS)原理,相较于传统的“缩圈”算法,不仅简化了实现难度,而且提高了效率。 #### 二、基本概念与定义 **有向...

    cactus-源码.rar

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

    tb_regs.rar_ridge_thunderbolt

    深入研究"tb_regs.c"源代码将有助于理解Thunderbolt技术的底层工作原理,对于开发、调试或者优化Thunderbolt设备的性能至关重要。对于那些从事Thunderbolt设备开发、驱动编程或者系统集成的人来说,这些知识是非常有...

    POV-ure-a-cactus-in-the-jurassic-era:-python游戏-

    通过研究源代码,你可以深入理解游戏开发的基本原理,包括游戏循环、图像和音频处理、用户输入处理以及碰撞检测等关键概念。 总之,“POV-ure-a-cactus-in-the-jurassic-era”是一个有趣的Python游戏开发示例,展示...

    JUnit教程工程代码实例

    JUnit教程工程代码实例是针对Java开发人员的一个详细学习资源,主要涵盖了...通过实际操作这些示例,开发者不仅可以深入理解JUnit的工作原理,还能掌握如何有效地测试和调试Java应用程序,从而提升项目的质量和可靠性。

    Junit sourcecode

    本课程资源旨在帮助你深入理解JUnit的工作原理,提升你的测试编写技巧,以及对测试驱动开发(TDD)有更深入的理解。 1. JUnit简介: JUnit是一个开源的、基于Java的单元测试框架,它使得编写和运行测试用例变得简单...

    Java极限编程下载

    ### Java极限编程知识点详解 #### 一、引言与核心概念 ...通过学习本书,读者不仅能够深入了解极限编程的基本原理,还能熟练掌握一系列重要的Java开发工具,这对于提升软件开发效率和质量具有重要意义。

    仙人掌:制作一种称为仙人掌的编程语言

    `Cactus-master`可能包含了该项目的所有源码,这对于学习语言的内部工作原理、进行调试或者参与项目开发是非常有价值的。对于想要探索不同编程语言特性和设计理念的开发者来说,研究和实践仙人掌语言会是一个有趣的...

    谷歌小恐龙彩蛋源代码

    谷歌小恐龙游戏是谷歌Chrome浏览器在无网络连接时出现的一款内置小游戏,它的主角是一只奔跑的小恐龙,玩家需要控制它跳跃避开...此外,如果你对谷歌小恐龙原版游戏的内部工作原理感兴趣,这是一个深入研究的好机会。

    Turbine资料

    - **运行示例**:Turbine通常会带有一些示例应用,通过运行这些示例,你可以快速了解其工作原理。 - **开发应用**:根据Turbine的架构,设计并实现你的应用,包括创建控制器、服务和视图。 **深入学习Turbine** ...

    Typecho主题:Typecho主题模板汇总

    :cactus:cactus一个响应式干净和简洁优雅的主题 一个极简的用于文字摘录的主题 这是一个偏向二次元的简洁风主题。追求阅读的舒适,所以字比较大 :cheese_wedge:一个还不错的清爽 Typecho 主题 :oden:一款简洁而又...

    常用的三维点云数据(已经整理格式).zip

    1. 点云数据的采集:了解激光雷达或3D扫描仪的工作原理和技术,以及如何从物理对象中获取点云数据。 2. 数据预处理:点云数据通常需要过滤、去噪、平滑等操作,以便于后续的建模和分析。 3. 点云格式转换:理解...

    Java进销存源码文档

    - **Cactus测试环境设置**:Cactus是一种Java单元测试框架,这里详细说明了如何配置Cactus来测试EJB。 **6. 模块创建与测试** - **基础信息模块**:这部分内容包含了系统中用于管理用户信息、商品信息、供应商...

    J2EEUnit-开源

    `architecture.html` 解释了 J2EEUnit 的内部工作原理。它通过动态代理和服务器端插件机制,能够在不修改被测试代码的情况下,插入测试逻辑。这包括对请求和响应对象的拦截,以及对服务器行为的模拟和验证。 **5. ...

    Struts1.1.6

    通常,这样的模板会包含一个简单的Action、Form Bean、JSP页面和配置文件,方便开发者理解和学习Struts的工作原理。 至于压缩包内的文件,`index.html`可能是入口页面,`example`可能是一些示例代码,`META-INF`...

    JUnit_in_Action,_2nd_Edition.pdf

    - **第3章:软件测试原则**:讲解软件测试的基本原理,帮助读者建立正确的测试观念。 - **第4章:最佳实践**:分享提高测试效果的方法和技巧。 - **第二部分:测试策略** - **第5章:粗粒度测试与桩(Stub)**:...

    60 节微信小程序开发视频教程配套源代码

    以微信小程序开发常见布局实例为主题,通过代码实战形式讲解最常用的页面布局实现逻辑,以此掌握 CSS3 常用属性、Flex 布局以及响应式原理与相关属性。 :party_popper: 新实战系列视频课程 《20 节实战微信天气预报...

    simster7

    5. 通过阅读代码和注释来理解项目的工作原理。 6. 运行项目,根据输出和结果来理解其功能。 总的来说,"simster7" 是一个基于 Python 的项目,由有深厚学术背景的开发者创建。通过探索解压后的文件,可以深入了解...

Global site tag (gtag.js) - Google Analytics