`

Cactus测试

阅读更多

转自:http://caterpillar.onlyfun.net/GossipCN/JUnit/FirstCactusWithTomcat.htm

来看看如何使用Cactus配合Tomcat来运行一个简单的Servlet测试,我们先取得Cactus相关档案,请至 Cactus 官方网站 下载,下载后解开压缩档案,将其下lib目录中的commons-logging-xxx.jar、aspectjrt-xxx.jar、cactus- xxx.jar、commons-httpclient-xxx.jar与junit-xxx.jar放置在您的Web应用程式的WEB-INF/lib 目录下。

您将使用Cactus的ServletTestRedirector作为之前介绍的Redirector Proxy,并使用Cactus的ServletTestRunner作为执行测试时的TestRunner,这两个被撰写为Servlet,所以您在 web.xml中加以定义:

  • web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
    version="2.4"> 
 
    <description> 
        Cactus Demo
    </description> 
    <display-name>Cactus Demo</display-name> 
    
    <servlet>
        <servlet-name>ServletRedirector</servlet-name>
        <servlet-class>
            org.apache.cactus.server.ServletTestRedirector
        </servlet-class>
    </servlet>
    
    <servlet>
        <servlet-name>ServletTestRunner</servlet-name>
        <servlet-class>
            org.apache.cactus.server.runner.ServletTestRunner
        </servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>ServletRedirector</servlet-name>
        <url-pattern>/ServletRedirector</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>ServletTestRunner</servlet-name>
        <url-pattern>/ServletTestRunner</url-pattern>
    </servlet-mapping>
</web-app>

接下来您先撰写测试案例,您将测试Servlet,所以要继承ServletTestCase:
  • LoginServletTest.java
package onlyfun.caterpillar.test;

import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;
import onlyfun.caterpillar.LoginServlet;

public class LoginServletTest extends ServletTestCase {    
    public void beginValidUser(WebRequest webRequest) {
        webRequest.addParameter("username", "justin");
        webRequest.addParameter("password", "123456");
    }
    
    public void testValidUser() {
        LoginServlet loginServlet = new LoginServlet();
        assertTrue(loginServlet.isValidUser(request));
    }

    public void beginInValidUser(WebRequest webRequest) {
        webRequest.addParameter("username", "guest");
        webRequest.addParameter("password", "123456");
    }
    
    public void testInValidUser() {
        LoginServlet loginServlet = new LoginServlet();
        assertFalse(loginServlet.isValidUser(request));
    }
}

TestRunner会呼叫beginXXX()方法(如果有的话),beginXXX()方法接收一个WebRequest 参数,您可以透过这个物件设定一些HTTP相关的讯息,例如加入使用者名称与密码,每一个testXXX()配合一个beginXXX()方法,所以名称 上必须符合,beginXXX()方法会在testXXX()方法之前被呼叫。

在testXXX()方法中您可以看到我们使用request名称,在接收到请求之后,Container 会产生相关的资源物件,ServletTestRedirector会将这些物件设定给request名称来参考,request即 ServletRequest物件,之后您可以使用这些相关物件来执行测试。

根据测试案例的内容,您可以撰写LoginServlet:
  • LoginSerlvet.java
package onlyfun.caterpillar;

import javax.servlet.http.*;

public class LoginServlet extends HttpServlet {
    public boolean isValidUser(HttpServletRequest request) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

       if(username == null || 
          password == null ||
          !username.equals("justin") || 
          !password.equals("123456")) {
            return false;
        }
        else {
            return true;
        }
    }
}

接下来可以启动Container了,可以开启浏览器并指定以下的网址来进行测试:
http://localhost:8080/cactusDemo/ServletTestRunner?
    suite=onlyfun.caterpillar.test.LoginServletTest


执行的结果会以XML传回:
 <testsuites>
 <testsuite name="onlyfun.caterpillar.test.LoginServletTest"
            tests="2" failures="0" errors="0" time="0.781">
    <testcase name="testValidUser" time="0.625"/>
    <testcase name="testInValidUser" time="0.062"/>
    </testsuite>
 </testsuites>

您也可以直接取得Cactus网站上提供的 cactus-report.xsl,并将之放在Web应用程式的目录下,然后使用以下的方式来取得较易阅读的讯息:
http://localhost:8080/cactusDemo/ServletTestRunner?
    suite=onlyfun.caterpillar.test.LoginServletTest&xsl=cactus-report.xsl


一个执行的结果网页画面如下:
Cactus执行画面

您也可以在web.xml中指定cactus-report.xsl的位置,例如:
  • web.xml
...
     <servlet>
        <servlet-name>ServletTestRunner</servlet-name>
        <servlet-class>
            org.apache.cactus.server.runner.ServletTestRunner
        </servlet-class>
        <init-param>
            <param-name>xsl-stylesheet</param-name>
            <param-value>styles/cactus-report.xsl</param-value>
        </init-param>
    </servlet>
...

之后在运行测试时可以于网址列中如下指定:
http://localhost:8080/cactusDemo/ServletTestRunner?
    suite=onlyfun.caterpillar.test.LoginServletTest&transform=yes


指定transfer=yes时可以对XML进行转换,如果不指定的话,直接输出XML。
分享到:
评论

相关推荐

    cactus的学习笔记(一)

    例如,假设有一个名为`MyServlet`的Servlet,你可以创建一个对应的Cactus测试类`TestMyServlet`,并在其中编写测试方法: ```java public class TestMyServlet extends ServletTestCase { public void testDoGet...

    jakarta-cactus-12-1.7.1.rar

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

    cactus-1.8.1-bin.zip

    3. **示例**:可能提供了一些示例项目,展示了如何设置Cactus测试,并且演示了如何针对不同类型的Web组件(如Servlets和EJBs)编写测试用例。 4. **构建脚本**:如Ant或Maven的构建脚本,用于帮助开发者设置测试...

    cactus-源码.rar

    5. **Maven Plugins**:对于Maven用户,Cactus提供了对应的插件,如`maven-cactus-plugin`,使Maven项目能轻松地进行Cactus测试。 三、源码细节探析 1. **Test Case生成**:Cactus通过扫描源码中的特定注解,自动...

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

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

    基于Junit的测试组件cactus

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

    Java静态分析Java代码检查.pdf

    对于Java EE类,Jtest会自动生成Cactus测试用例,确保在真实容器中进行测试。 5. **Jtest Tracer**:此功能监控应用程序的实时配置,通过捕获实际功能测试的行为来扩展回归测试用例。当测试用例中的功能出现问题时...

    Java静态分析Java代码检查.docx

    对于Java EE应用,Jtest会自动生成Cactus测试用例,确保在真实的Java容器环境中进行测试。 4. **回归测试和行为捕获**:Jtest的Tracer功能允许在应用程序的实际配置下捕获测试行为,扩展回归测试用例。通过执行测试...

    Java极限编程

    使用Cactus测试容器服务** Cactus是一个用于测试Java EE容器服务的框架。它提供了模拟容器环境的功能,允许开发者在不依赖实际容器的情况下对组件进行测试。这对于提高测试覆盖率和确保组件在不同容器中的兼容性...

    java网上银行,完整代码

    - **BAMS_Cactus_v1.03**:这可能是系统的一个测试版本,包含了Cactus测试的结果和优化建议。Cactus可以帮助开发者定位性能瓶颈,进行压力测试,确保系统在高并发环境下也能正常工作。 6. **持续集成与部署** - ...

    UML进销存需求分析文档

    项目创建与设置章节涵盖了如何在JBuilder环境中创建和配置项目,包括EJB模板的设定、互联网应用程序的构建、Cactus测试环境的搭建以及EAR应用程序的创建和部署,帮助读者掌握实际开发中的操作步骤。 基础信息模块的...

    UML进销存需求分析文档.doc

    【项目创建与设置】章节介绍了如何使用JBuilder创建项目、设置EJB模板、创建互联网应用程序、配置Cactus测试环境、生成和部署EAR应用程序等,为读者提供了一整套实践指导。 【基础信息模块的创建】和【进货模块的...

    Developing and Unit Testing with Cactus

    ### 开发与单元测试:利用Cactus框架在WebSphere Studio Application Developer中的应用 #### Cactus框架简介 Cactus是Apache Software Foundation(ASF)Jakarta项目下的一个开源子项目,主要功能在于提供一种...

    使用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

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

    JAVA-进销存设计文档

    - **Cactus测试环境的设置**:Cactus是一种用于Java EE应用测试的框架,这部分内容涉及如何配置测试环境来验证系统的正确性。 - **EAR应用程序创建和部署**:指导如何打包所有的组件成一个EAR文件,并将其部署到...

Global site tag (gtag.js) - Google Analytics