用Cactus来测试J2ee应用

Junit是当前最流行的测试框架,它能够让开发人员很方便的编写测试单元,可以使他们"放心"地开发 。但是现在很多的应用都是基于j2ee的,代码都是在服务器端的容器里面运行,这个使测试带来了一些麻 烦。对于普通的jsp,servlet用Junit来测试好像已经不是那么方便,对于EJB来说,特别是2.0版本,很多 接口都是Local Interface,没有办法进行分布式的测试。那么我们如何进行这些代码的测试呢?Apache 为我们提供了一个强大的工具 Cactus!它是一套简单,易于使用的服务器端测试框架,可以使开发人员 很轻松的测试服务器端的程序,他们会说:"哦,就是这么简单"。Cactus是 Junit的一个扩展,但是它又 和Junit有一些不同。Cactus的测试分为三种不同的测试类别, JspTestCase,ServletTestCase,FilterTestCase,而不是像Junit就一种TestCase。Cactus 的测试代码有 服务器端和客户端两个部分,他们协同工作。那我们为什么不用Junit来做测试呢?主要有一下几个理由 :

EJB2.0中的Local interface ,不允讯远程调用。用Junit不好测试,而Cactus的redirector位于服务 器端,可以和EJB运行在一个容器中,这使得它可以直接访问Local Interface。

一般EJB或者servlet,jsp都是运行在服务器上,如果你使用junit测试的话,你的测试是在客户端,这 使的运行环境和测试环境处于不同的系统环境中,这个有时候会不同的测试结果。

在一个EJB的应用中,一般都会有一些前端应用来访问EJB,例如:jsp,servlet,javabean。这就意味着 你需要一个测试框架来测试这些前端的组件。Cactus提供了所有这些组件的测试方法。哦,太棒了。

Cactus和ant很好的结合在一起,可以很容易的完成自动化测试,减少了很多工作量。当然,junit也 提供这样的支持。

前面是对Cactus作了一个大致的介绍,接下来我们用一个实际的例子来运用一下这个强大的测试框架 。首先我们需要一个被测试的对象,在这里我们选用EJB2.0 CMP.我们做一个简单的用户管理。一下就一 些主要的代码,来进行一些分析。

UserHome.java
package usersystem;
import javax.ejb.*;
import java.util.*;
public interface UserHome extends javax.ejb.EJBLocalHome {
  public User create(String name, String password) throws CreateException;
  public Collection findAll() throws FinderException;
   public User findByPrimaryKey(String name) throws FinderException;
}
User.java
package usersystem;
import javax.ejb.*;
import java.util.*;
public interface User extends javax.ejb.EJBLocalObject {
  public String getName();
  public void setPassword(String password);
  public String getPassword();
  public void setUserInfo(UserInfo userInfo);
  public UserInfo getUserInfo();
  public void setName(String name);
}
UserInfoHome.java
package usersystem;
import javax.ejb.*;
import java.util.*;
public interface UserInfoHome extends javax.ejb.EJBLocalHome {
   public UserInfo create(String name, String email, String address, String  tel) throws
CreateException;
   public UserInfo findByPrimaryKey(String name) throws FinderException;
}

时间: 2024-09-04 22:24:09

用Cactus来测试J2ee应用的相关文章

J2EE开发框架发展简史

j2ee Java2企业版为中间件领域思想的统一上发挥了很大的作用.比如,J2EE为分布式事务管理.目录服务和消息服务提供了一套标准的编程接口.J2EE的基础--Java2标准版(J2SE) ,成功地为Java提供了一套访问关系数据库的标准. 但是,就像本文中"J2EE缺乏对编程的支持"提到的一样,J2EE这个平台没有能够提供一个令人满意的应用程序编程模型(application programming model).Sun公司和一些大的应用服务器供应商都想用开发工具来降低J2EE开发

值的关注的Java开源项目(原创)

项目|原创 值的关注的Java开源项目   名称 资料 概况 OFBiz http://ofbizchina.com:8080/ http://www.ofbiz.org/ https://ofbiz.dev.java.net/ OFBiz是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级.跨平台.跨数据库.跨应用服务器的多层.分布式电子商务类WEB应用系统的框架.     OFBiz最主要的特点是OFBiz提供了一整套的开发基于Java的web应用程序

灵活使用EJB的本地和远程接口(四)

部署不同的体系结构 服务器项目 创建一个名为"TestServerTomcat"的 Tomcat 服务器项目.在此项目内,选择 New Server and Server Configuration,输入"ServerTomcat"作为服务器名(Server name),并且在"Apache Tomcat version 4.1"下选择 Test Environment 作为服务器类型(Server type).在下一个面板中,指定 TOMCAT

Java开源Web功能测试工具介绍

HtmlUnit HtmlUnit 是 JUnit 的扩展测试框架之一.HtmlUnit 将返回文档模拟成 HTML,这样您便可以直接处理这些文档了.HtmlUnit 使用例如 table.form 等标识符将测试文档作为 HTML 来处理.它同样需要遵循 JUnit 测试框架结构的 Java测试程序. MaxQ MaxQ是一个Web功能测试工具.它包括一个记录测试脚本的HTTP代理,一个用于重放测试的命令行实用程序.代理记录器自动存储提交到表单的变量,那么你无需用手书写它们. jWebUnit

j2ee最小化资源压力测试法则

前面看到有人讲j2ee的性能调优,虽然这块不是自己的专长,但是猪养多了,也忍不住跳出来说几句. 虽然几乎每本讲性能调优的书籍开篇都会提,没必要的情况下就不要做调优,但是我个人还是认为,所有系统在上线前,都应该做一次基本的压力测试并对相关的性能问题进行检测, 但是迫于资源压力,很多项目都无法做正规的压力测试,一直到系统上线出现问题,才倒回来找原因. 而正规的压力测试,往往因为需要严格模拟生产环境,需要耗费大量的资源,各类专家配合解决问题,并不是那么轻松的可以做下来的. 而j2ee应用的特点就是以复

J2EE S2SH框架测试

问题描述 Q1:S2SH三大框架如何测试?Q2:测试驱动开发在J2ee项目中的全程实践?谁有发给我一份email:xiaocheng.liu921@gmail.com在线等.......... 解决方案 解决方案二:直接用junit就行了你还想测试什么不就是action和DAO么解决方案三:S2SH三大框架如何测试?你要测试什么?性能还是功能?功能junit性能压力测试解决方案四:引用1楼zn85600301的回复: 直接用junit就行了你还想测试什么不就是action和DAO么 是啊,就是S

J2EE vs .NET--MiddleWare Company(从事J2EE教育推广的公司)测试结

1.这次的评测不是m$作的,而是java(主要是j2ee)推广和培训的middleware company(我佩服这样的公司可以将对自己不利的数据公布出来)做出的(看得出费了很大的力气),在评测中得到了theserverside.com的协助.    2.比较的产品仍然是各自的petshop(都是2.0),这次.net的petshop将存储过程改为了动态sql,和ejb站在了同一起跑线上.        而java的petshop,middleware对它进行了彻底的优化,优化后的petshop

J2EE vs .NET--MiddleWare Company(从事J2EE教育推广的公司)测试结果

j2ee|推广     1.这次的评测不是m$作的,而是java(主要是j2ee)推广和培训的middleware company(我佩服这样的公司可以将对自己不利的数据公布出来)做出的(看得出费了很大的力气),在评测中得到了theserverside.com的协助.    2.比较的产品仍然是各自的petshop(都是2.0),这次.net的petshop将存储过程改为了动态sql,和ejb站在了同一起跑线上.        而java的petshop,middleware对它进行了彻底的优化

J2EE vs .NET测试结果

j2ee     1.这次的评测不是m$作的,而是java(主要是j2ee)推广和培训的middleware company(我佩服这样的公司可以将对自己不利的数据公布出来)做出的(看得出费了很大的力气),在评测中得到了theserverside.com的协助.    2.比较的产品仍然是各自的petshop(都是2.0),这次.net的petshop将存储过程改为了动态sql,和ejb站在了同一起跑线上.        而java的petshop,middleware对它进行了彻底的优化,优化