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

用cactus,jetty实现对servlet类进行单元测试二

阅读更多

按照官网的定义,我们就可以用MILY: 'Arial','sans-serif'; FONT-SIZE: 10.5pt" lang=EN-US>cactusJUnit一起来完成对上述servlet的测试了。

首先,我们来建一个web项目,我定义的名称为cactustest把下载下来的cactus解压,把cactus-1.7.2\lib中的jar包复制到WebRoot\WEB-INF\lib下,也可以建立自己的用户库,方便以后的项目使用。搭建好环境后,接下来就可以写上面程序的测试类啦,让我们来用cactus为上面的程序写一个测试类,测试类代码为:

package com.test.servlet;

 

import org.apache.cactus.ServletTestCase;

import org.apache.cactus.WebRequest;

 

public class LoginServletCactusTest extends ServletTestCase {

    //先来个正确的测试用例

    //分别为usernamepassword赋值

    public void beginLoginUser(WebRequest webRequest) {

       webRequest.addParameter("username", "cuckoo");

       webRequest.addParameter("password", "123");

    }

   //使用assertTrue方法断言,如果正确返回true

    public void testLoginUser() {

       LoginServlet loginServlet = new LoginServlet();

       assertTrue(loginServlet.loginUser(request));

    }

   //再来个错误的测试用例

   //分别为usernamepassword赋值

    public void beginInLoginUser(WebRequest webRequest) {

       webRequest.addParameter("username", "guest");

       webRequest.addParameter("password", "123456");

    }

  //使用assertFalse方法断言,如果错误返回true

    public void testInLoginUser() {

       LoginServlet loginServlet = new LoginServlet();

       assertFalse(loginServlet.loginUser(request));

    }

}

这样,测试类就搞定了,

 

下图是我的项目结构如下图:

OK,现在就可以启动tomcat了,部署成功后在地址栏上输入http://localhost:8080/cactustest/ServletTestRunner?suite=com.test.servlet.LoginServletCactusTest  回车,你将会看到让自己感到高兴的结果,此种方式是以XML形式输出测试结果,如下图:

还可以用cactus自定义的的样式表的方式输出测试结果,只需要把cactus自带的cactus-report.xsl文件加入到webroot目录下就可以了,在地址栏上输入http://localhost:8080/cactustest/ServletTestRunner?suite=com.test.servlet.LoginServletCactusTest&xsl=cactus-report.xsl  回车,这种形式的输出比较美观,如下图所示:

到这里,一个单独用JUnit不能完成的测试用上cactus就搞定了,或许我们会感觉高兴下,从技术上我们是实现了用JUnitcactusservlet的测试,但细心的你是否已经发现了其中的不便之处,就是每次对一个servlet测试前都要启动tomcat,这样大大增加了测试时间,也可能影响项目进度。有没有什么方法可以解决这个问题呢?细心的你可能已经发现,在我的项目结构图上,已经有一个LoginServletJettyTest.java类。是的,这个就是为了解决上面问题而用的另一种框架,它就是Jetty。它运行测试servlet就像用JUnit测试普通java类一样那么简单,不需要启动tomcat

在这里我们可以使用Jetty 它的下载地址为 http://jetty.mortbay.org/jetty/index.html ,它是个Java写的HTTP服务器,本身也是个ContainerCactus集成了Jetty,并提供与测试相关的简便类别。

使用Cactus+Jetty执行测试,在更大的程度上隐藏了测试运行过程的细节,您不必关心Redirector Proxy,更不一定要关心TestCase在客户端与服务器端的行为,运行起来就如同在运作一个JUnit测试。

   WebRoot\WEB-INF\lib原来的基础上加入cactus.core.framework.uberjar.javaEE.14-1.8.1.jar就行了.

 

分享到:
评论

相关推荐

    cactus的学习笔记(一)

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

    jakarta-cactus-12-1.7.1.rar

    - 创建Cactus测试类,这些类继承自Cactus提供的基类,并使用JUnit注解。 - 在测试方法中,使用Cactus提供的API来模拟HTTP请求,与服务器交互。 - 测试执行后,Cactus会捕获结果并报告测试状态。 4. **Cactus的...

    cactus-源码.rar

    1. **Cactus Core**:这是Cactus的核心模块,实现了与Servlet容器的交互,包括测试类的生成和执行。主要类如`org.apache.cactus.Server`负责与服务器的通信,`org.apache.cactus.ServletTestRunner`处理Servlet的...

    cactus-1.8.1-bin.zip

    要使用Cactus,开发者需要在Java Web项目中引入Cactus库,然后编写测试类,这些类会扩展Cactus提供的基类。测试代码将在服务器上下文中运行,可以直接访问Servlet API和其他Web服务。这使得测试更加真实,更接近实际...

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

    在本文中,我们将深入探讨如何使用一系列技术和工具,如EJB、Struts1.3、Ant、Cactus、DbUnit、JMeter以及StrutsTest,来实现一个完整的测试流程,针对一个基于Java的企业级应用程序进行全面的测试。这些技术在软件...

    基于Junit的测试组件cactus

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

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

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

    Developing and Unit Testing with Cactus

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

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

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

    软件测试技术在J2EE项目中的应用

    TestSuite类则可以组合多个Testcase或TestSuite,实现对多个类的测试。 2. 整合测试:在单元测试基础上,整合测试关注模块间的交互。例如,Cactus作为JUnit的扩展,允许在服务器端执行测试,特别适用于测试EJB、...

    JUnit教程(测试框架)

    例如,Cactus框架扩展了JUnit,使其能够对Servlet、JSP等Web组件进行单元测试;而HttpUnit则提供了对Web应用程序的功能单元测试支持;JsUnit专为JavaScript的单元测试设计。 #### 集成与自动化 为了进一步提高测试...

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

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

    CACTUS

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

    语言技术语言技术语言技术

    Cactus是在JUnit基础上扩展的,专门用于Java Web应用的单元测试,包括Servlet、Filter和JSP。在Cactus中,你可以通过继承特定的基类,如`ServletTestCase`、`FilterTestCase`或`JspTestCase`,来编写针对这些Web组件...

    测试实践:Eclipse 之 JUnit

    命名测试类时,应清晰表明其为测试类并揭示测试内容。例如,可以将测试类命名为原类名加上“Test”后缀。但需要注意,这种方法在TDD中可能导致问题,因为测试可能在实际类存在之前编写,或者一个测试可能覆盖多个...

    6-Cactus.rar

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

    Cactus 业务流程执行平台的研究和实现

    《Cactus 业务流程执行平台的研究与实现》 在当今数字化时代,业务流程管理(Business Process Management, BPM)已经成为企业提升效率、优化运营的关键。Cactus 业务流程执行平台是这样一款工具,它集成了多种技术...

    有向cactus判定的证明

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

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

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

Global site tag (gtag.js) - Google Analytics