- 浏览: 308353 次
- 性别:
- 来自: 南昌
文章分类
最新评论
-
秋风扫落叶:
不错,学习了。shadow文件中记录的格式是什么?
/etc/passwd & /etc/shadow 详解 -
key232323:
重拾jstl——写得很好。我收藏下。
JSTL标签用法 -
zxl10059:
不错,非常简明扼要
Hibernate分页 -
Batmankwok:
很好,所见略同,
自定义组件MXML和as两种实现的方式和区别 -
Dxx23:
摘话回帖!
通过response对象的sendRedirec ...
response.sendRedirect方式的转向与RequestDispatcher的forward方法的比较
在开发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
发表评论
-
web.xml tomcat 和jetty 区别
2010-09-07 09:31 2180因为使用GWT,所以测试的时候是在jetty上运行的,但是最后 ... -
单元测试之实践四 Action的测试
2010-08-30 10:14 866Action的测试是比较辛苦的。因为它依赖与其他的环境(比如t ... -
单元测试之实践三 Service的测试
2010-08-30 10:13 991测试Service,因为Service依赖的Dao, 所以只需 ... -
单元测试之实践二,关于DAO的测试
2010-08-30 10:12 966前阵子发表过 我的第一个真正意义上的测试 。里面对于测试S ... -
Mockito特点
2010-08-30 10:02 11031. 只能使用jdk1.5以上,因为它的方便是用jdk1.5的 ... -
HttpUnit进行Web测试
2010-08-30 00:06 1707简介:HttpUnit是基于JUnit ... -
关于单元测试的一些看法
2010-08-28 14:26 920从参加工作以来,参加 ... -
用cactus,jetty实现对servlet类进行单元测试三(完)
2010-08-28 11:39 1128OK,可以开始写测试类了,代码为: pa ... -
用cactus,jetty实现对servlet类进行单元测试二
2010-08-28 11:37 1375按照官网的定义,我们就可以用MILY: 'Arial','sa ... -
用cactus,jetty实现对servlet类进行单元测试一
2010-08-28 11:35 1402JUnit是名声大燥了,想必只要学过JAVA的人都知道世上有个 ... -
相关测试工具下载
2010-08-26 17:21 1463相关测试工具下载 HP-Mercury软件测试工具下载,随时 ... -
单元测试实践小结
2010-08-26 16:40 627在系统开发过程种使用单元测试,会带来很多的的好处,最明显为: ... -
软件测试杂录
2010-08-26 14:41 1114比较杂,有空再整理一 ... -
J2EE单元测试
2010-08-26 11:06 1075一、测试原则 Java ... -
利用httpunit测试servlet
2010-08-26 10:33 2031传统的Java WEB应用中,核心技术莫过于Servlet类与 ... -
使用 EasyMock 更轻松地进行测试
2010-08-25 14:40 1011测试驱动开发是软件开发的重要部分。如果代码不进行测试,就是不可 ... -
Cactus工作原理
2010-08-24 09:52 1013Cactus 是Jakarta的子项目 ... -
Cactus实例讲解
2010-08-23 17:08 929Cactus简介 . 简介 Cactus实现了对JUni ... -
flex和java的通信
2010-08-17 15:35 734一、准备: 服务端:J ... -
Flash 聊天室
2010-08-17 11:39 995今天我们来制作 Flash 聊天室,学习使用 Socket 类 ...
相关推荐
本项目"使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3"正是针对这一目标进行的实践。下面将详细介绍这些技术及其在测试中的应用。 **EJB(Enterprise JavaBeans)** 是Java平台上的企业级组件...
JMeter是Apache组织开发的一款性能测试工具,它可以模拟大量并发用户对服务器进行压力测试,检查系统在高负载下的稳定性和性能瓶颈。JMeter支持多种协议,包括HTTP、FTP、JDBC等,非常适合测试Web应用的性能和稳定性...
本项目利用一系列强大的工具,如EJB(Enterprise JavaBeans)、Struts 1.3、Ant构建工具、Cactus测试框架、DbUnit数据库单元测试工具、JMeter性能测试工具以及StrutsTest扩展,来实现一个全面的测试流程。...
3. 配置Servlet容器:根据所使用的Servlet容器(如Tomcat、Jetty等),配置Cactus插件或者设置相应的系统属性。 编写Cactus测试用例时,你需要继承自Cactus提供的基类,如`org.apache.cactus.ServletTestCase`。...
- **Servlet桥接**:Cactus通过创建一个特殊的Servlet,将测试请求转发给被测试的Servlet,然后返回结果,实现服务器端的单元测试。 - **集成测试**:Cactus不仅限于单元测试,还能进行集成测试,验证不同组件之间...
2. **Servlet Adapters**:针对不同的Servlet容器,Cactus提供了适配器,如Tomcat、Jetty等,这些适配器确保Cactus能在各种环境中正常工作。 3. **Test Framework**:Cactus的测试框架提供了丰富的注解,如`@Test`...
由于Web应用的复杂性,直接对它们进行单元测试可能很困难,这就是Cactus发挥作用的地方。 Cactus将测试代码集成到服务器内部,使得能够直接在服务器环境中运行测试,从而解决了Web应用单元测试的挑战。这种做法减少...
3. **集成测试**(Integration Tests):检查不同组件间的交互,可能需要特定的测试环境,例如预置测试数据,有时会使用如Cactus这样的J2EE集成库。 4. **开发测试**(Developer's Tests):开发者用于验证新代码或...
Cactus是一个基于JUnit框架的简单测试框架,用来单元测试服务端Java代码。Cactus框架的主要目标是能够单元测试服务端的使用Servlet对象的Java方法如HttpServletRequest,HttpServletResponse,HttpSession等
org.apache.cactus.eclipse.runner-1.8.0.jar
通过这种方式,Cactus能实现对不同用户访问资源的精细控制,确保系统的安全性。权限管理通常涉及到登录认证、授权以及会话管理等环节。 CMS系统是Cactus的另一个关键特性。CMS允许非技术人员创建、编辑和管理网站...
Cactus是Apache Software Foundation(ASF)Jakarta项目下的一个开源子项目,主要功能在于提供一种简单且高效的框架来对服务器端的Java代码进行单元测试。这包括但不限于Servlets、EJBs、TagLibs、Filters等组件。...
CACTUS是一个与字体设计相关的主题。在计算机和图形设计领域,字体是至关重要的元素,它们不仅用于传达信息,还对整体视觉效果产生深远影响。"CACTUS"可能指的是一个特定的字体系列、字体库或者一个与仙人掌主题相关...
提到“需要的同学可以看看”,这暗示了该文件可能与教育、学习或共享资源有关,适合对Cactus(仙人掌)主题有兴趣或者正在学习相关知识的学生或爱好者。 由于标签和压缩包子文件的文件名称列表只给出了"6-Cactus",...
**Python-Cactus设计师设计的静态站点生成器** Python-Cactus是一款专为设计师打造的静态站点生成器,它基于Python编程语言,并采用了强大的Django模板引擎。Cactus的主要目的是简化静态网站的创建流程,使得设计师...
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
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
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
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