按照官网的定义,我们就可以用MILY: 'Arial','sans-serif'; FONT-SIZE: 10.5pt" lang=EN-US>cactus和JUnit一起来完成对上述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 {
//先来个正确的测试用例
//分别为username和password赋值
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));
}
//再来个错误的测试用例
//分别为username和password赋值
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就搞定了,或许我们会感觉高兴下,从技术上我们是实现了用JUnit加cactus对servlet的测试,但细心的你是否已经发现了其中的不便之处,就是每次对一个servlet测试前都要启动tomcat,这样大大增加了测试时间,也可能影响项目进度。有没有什么方法可以解决这个问题呢?细心的你可能已经发现,在我的项目结构图上,已经有一个LoginServletJettyTest.java类。是的,这个就是为了解决上面问题而用的另一种框架,它就是Jetty。它运行测试servlet就像用JUnit测试普通java类一样那么简单,不需要启动tomcat。
在这里我们可以使用Jetty 它的下载地址为 http://jetty.mortbay.org/jetty/index.html ,它是个Java编写的HTTP服务器,本身也是个Container,Cactus集成了Jetty,并提供与测试相关的简便类别。
使用Cactus+Jetty执行测试,在更大的程度上隐藏了测试运行过程的细节,您不必关心Redirector Proxy,更不一定要关心TestCase在客户端与服务器端的行为,运行起来就如同在运作一个JUnit测试。
在WebRoot\WEB-INF\lib原来的基础上加入cactus.core.framework.uberjar.javaEE.14-1.8.1.jar就行了.
分享到:
相关推荐
3. 配置Servlet容器:根据所使用的Servlet容器(如Tomcat、Jetty等),配置Cactus插件或者设置相应的系统属性。 编写Cactus测试用例时,你需要继承自Cactus提供的基类,如`org.apache.cactus.ServletTestCase`。...
- 创建Cactus测试类,这些类继承自Cactus提供的基类,并使用JUnit注解。 - 在测试方法中,使用Cactus提供的API来模拟HTTP请求,与服务器交互。 - 测试执行后,Cactus会捕获结果并报告测试状态。 4. **Cactus的...
1. **Cactus Core**:这是Cactus的核心模块,实现了与Servlet容器的交互,包括测试类的生成和执行。主要类如`org.apache.cactus.Server`负责与服务器的通信,`org.apache.cactus.ServletTestRunner`处理Servlet的...
要使用Cactus,开发者需要在Java Web项目中引入Cactus库,然后编写测试类,这些类会扩展Cactus提供的基类。测试代码将在服务器上下文中运行,可以直接访问Servlet API和其他Web服务。这使得测试更加真实,更接近实际...
在本文中,我们将深入探讨如何使用一系列技术和工具,如EJB、Struts1.3、Ant、Cactus、DbUnit、JMeter以及StrutsTest,来实现一个完整的测试流程,针对一个基于Java的企业级应用程序进行全面的测试。这些技术在软件...
Cactus是一个基于JUnit框架的简单测试框架,用来单元测试服务端Java代码。Cactus框架的主要目标是能够单元测试服务端的使用Servlet对象的Java方法如HttpServletRequest,HttpServletResponse,HttpSession等
本项目利用一系列强大的工具,如EJB(Enterprise JavaBeans)、Struts 1.3、Ant构建工具、Cactus测试框架、DbUnit数据库单元测试工具、JMeter性能测试工具以及StrutsTest扩展,来实现一个全面的测试流程。...
Cactus是Apache Software Foundation(ASF)Jakarta项目下的一个开源子项目,主要功能在于提供一种简单且高效的框架来对服务器端的Java代码进行单元测试。这包括但不限于Servlets、EJBs、TagLibs、Filters等组件。...
本项目"使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3"正是针对这一目标进行的实践。下面将详细介绍这些技术及其在测试中的应用。 **EJB(Enterprise JavaBeans)** 是Java平台上的企业级组件...
TestSuite类则可以组合多个Testcase或TestSuite,实现对多个类的测试。 2. 整合测试:在单元测试基础上,整合测试关注模块间的交互。例如,Cactus作为JUnit的扩展,允许在服务器端执行测试,特别适用于测试EJB、...
例如,Cactus框架扩展了JUnit,使其能够对Servlet、JSP等Web组件进行单元测试;而HttpUnit则提供了对Web应用程序的功能单元测试支持;JsUnit专为JavaScript的单元测试设计。 #### 集成与自动化 为了进一步提高测试...
通过这种方式,Cactus能实现对不同用户访问资源的精细控制,确保系统的安全性。权限管理通常涉及到登录认证、授权以及会话管理等环节。 CMS系统是Cactus的另一个关键特性。CMS允许非技术人员创建、编辑和管理网站...
CACTUS是一个与字体设计相关的主题。在计算机和图形设计领域,字体是至关重要的元素,它们不仅用于传达信息,还对整体视觉效果产生深远影响。"CACTUS"可能指的是一个特定的字体系列、字体库或者一个与仙人掌主题相关...
Cactus是在JUnit基础上扩展的,专门用于Java Web应用的单元测试,包括Servlet、Filter和JSP。在Cactus中,你可以通过继承特定的基类,如`ServletTestCase`、`FilterTestCase`或`JspTestCase`,来编写针对这些Web组件...
命名测试类时,应清晰表明其为测试类并揭示测试内容。例如,可以将测试类命名为原类名加上“Test”后缀。但需要注意,这种方法在TDD中可能导致问题,因为测试可能在实际类存在之前编写,或者一个测试可能覆盖多个...
提到“需要的同学可以看看”,这暗示了该文件可能与教育、学习或共享资源有关,适合对Cactus(仙人掌)主题有兴趣或者正在学习相关知识的学生或爱好者。 由于标签和压缩包子文件的文件名称列表只给出了"6-Cactus",...
《Cactus 业务流程执行平台的研究与实现》 在当今数字化时代,业务流程管理(Business Process Management, BPM)已经成为企业提升效率、优化运营的关键。Cactus 业务流程执行平台是这样一款工具,它集成了多种技术...
本文旨在通过对有向Cactus图的特性进行深入分析,提出一种高效的判定算法,该算法基于深度优先搜索(DFS)原理,相较于传统的“缩圈”算法,不仅简化了实现难度,而且提高了效率。 #### 二、基本概念与定义 **有向...
**Python-Cactus设计师设计的静态站点生成器** Python-Cactus是一款专为设计师打造的静态站点生成器,它基于Python编程语言,并采用了强大的Django模板引擎。Cactus的主要目的是简化静态网站的创建流程,使得设计师...