转自: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中加以定义:
<?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:
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:
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
一个执行的结果网页画面如下:
您也可以在web.xml中指定cactus-report.xsl的位置,例如:
...
<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。
分享到:
相关推荐
例如,假设有一个名为`MyServlet`的Servlet,你可以创建一个对应的Cactus测试类`TestMyServlet`,并在其中编写测试方法: ```java public class TestMyServlet extends ServletTestCase { public void testDoGet...
- 创建Cactus测试类,这些类继承自Cactus提供的基类,并使用JUnit注解。 - 在测试方法中,使用Cactus提供的API来模拟HTTP请求,与服务器交互。 - 测试执行后,Cactus会捕获结果并报告测试状态。 4. **Cactus的...
3. **示例**:可能提供了一些示例项目,展示了如何设置Cactus测试,并且演示了如何针对不同类型的Web组件(如Servlets和EJBs)编写测试用例。 4. **构建脚本**:如Ant或Maven的构建脚本,用于帮助开发者设置测试...
5. **Maven Plugins**:对于Maven用户,Cactus提供了对应的插件,如`maven-cactus-plugin`,使Maven项目能轻松地进行Cactus测试。 三、源码细节探析 1. **Test Case生成**:Cactus通过扫描源码中的特定注解,自动...
本项目利用一系列强大的工具,如EJB(Enterprise JavaBeans)、Struts 1.3、Ant构建工具、Cactus测试框架、DbUnit数据库单元测试工具、JMeter性能测试工具以及StrutsTest扩展,来实现一个全面的测试流程。...
Cactus是一个基于JUnit框架的简单测试框架,用来单元测试服务端Java代码。Cactus框架的主要目标是能够单元测试服务端的使用Servlet对象的Java方法如HttpServletRequest,HttpServletResponse,HttpSession等
对于Java EE类,Jtest会自动生成Cactus测试用例,确保在真实容器中进行测试。 5. **Jtest Tracer**:此功能监控应用程序的实时配置,通过捕获实际功能测试的行为来扩展回归测试用例。当测试用例中的功能出现问题时...
对于Java EE应用,Jtest会自动生成Cactus测试用例,确保在真实的Java容器环境中进行测试。 4. **回归测试和行为捕获**:Jtest的Tracer功能允许在应用程序的实际配置下捕获测试行为,扩展回归测试用例。通过执行测试...
使用Cactus测试容器服务** Cactus是一个用于测试Java EE容器服务的框架。它提供了模拟容器环境的功能,允许开发者在不依赖实际容器的情况下对组件进行测试。这对于提高测试覆盖率和确保组件在不同容器中的兼容性...
- **BAMS_Cactus_v1.03**:这可能是系统的一个测试版本,包含了Cactus测试的结果和优化建议。Cactus可以帮助开发者定位性能瓶颈,进行压力测试,确保系统在高并发环境下也能正常工作。 6. **持续集成与部署** - ...
项目创建与设置章节涵盖了如何在JBuilder环境中创建和配置项目,包括EJB模板的设定、互联网应用程序的构建、Cactus测试环境的搭建以及EAR应用程序的创建和部署,帮助读者掌握实际开发中的操作步骤。 基础信息模块的...
【项目创建与设置】章节介绍了如何使用JBuilder创建项目、设置EJB模板、创建互联网应用程序、配置Cactus测试环境、生成和部署EAR应用程序等,为读者提供了一整套实践指导。 【基础信息模块的创建】和【进货模块的...
### 开发与单元测试:利用Cactus框架在WebSphere Studio Application Developer中的应用 #### Cactus框架简介 Cactus是Apache Software Foundation(ASF)Jakarta项目下的一个开源子项目,主要功能在于提供一种...
本项目"使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3"正是针对这一目标进行的实践。下面将详细介绍这些技术及其在测试中的应用。 **EJB(Enterprise JavaBeans)** 是Java平台上的企业级组件...
在本文中,我们将深入探讨如何使用一系列技术和工具,如EJB、Struts1.3、Ant、Cactus、DbUnit、JMeter以及StrutsTest,来实现一个完整的测试流程,针对一个基于Java的企业级应用程序进行全面的测试。这些技术在软件...
- **Cactus测试环境的设置**:Cactus是一种用于Java EE应用测试的框架,这部分内容涉及如何配置测试环境来验证系统的正确性。 - **EAR应用程序创建和部署**:指导如何打包所有的组件成一个EAR文件,并将其部署到...