项目描述
Cactus是一个对服务器端Java代码(Servlet,EJBs,Tag Libs, Filters,....)进行单元测试的简单的测试框架。
Cactus的目标是降低编写服务器代码单元测试的成本。它使用并扩展了Junit。
Cactus实现了in-container策略,意味着测试是运行在容器内的。
Cactus系统由一些组件组成:
- Cactus框架:这是Cactus的核心,它是提供编写Cactus测试所用API的引擎。
- Cactus集成模块(Integration Modules):一些front ends和框架,用来提供一种简单的方式来使用Cactus 框架 (Ant scripts, Eclipse plugin, Maven plugin, ...)。
- Cactus示例:一些简单的项目,用来演示如何编写Cactus测试,如何使用集成模块。
单元测试的不同种类
一共有几个不同种类的单元测试框架,我们把它们分为三大类:
-
类型1:代码逻辑单元测试。或许编写这种测试的最好策略就是使用Mock Objects类型的框架。
-
类型2:集成单元测试。Cactus是这种类型中的典型(它是不是最好,我们会让你作出一个评价的^_^)。这种测试会与容器进行交互。
-
类型3:功能性单元测试。这种测试会让你测试从服务端返回来的值。比如HttpUnit()注意HttpUnit也执行标准的功能性测试-Note that HttpUnit also performs standard functional testing
- as opposed to functional unit testing -, 让你测试一个完整的用例-比如登录用例,由好几个Request/Response)。which let you test full use cases - a login use case for example, which is comprised of several requests/responses).
最完美的情况是仅仅是要对你的代码进行单元测试,你就要使用3种不同的框架,然后你还要想一下验收测试,系统集成测试... ...
Cactus作为第2种类型测试框架而开发,但是对于类型1和3,也是一个很好的折中,你可以使用Cactus更容易的为一个单独的框架写测试。此外你从来都不用完全的测试你的代码,我们相信Cactus提供了一个中间组(middle groud),可以自信的保证你的代码在发布后可以运行。然而,这是你的选择,你也可以仅使用Cactus进行第2种类型的测试,如果你愿意。
开始使用
想要开始使用Cactus,请阅读Getting Started指南。
序
如果你想快速的体验一下Cactus, 有一个20 minutes
tutorial会带领你在Tomcat上完整的运行你的第一个Cactus测试。这个测试仅仅是让你快速的测试了一些东西,但是却没有解释Cactus如何工作或者其它一些细节内容。
我们建议你运行那个快速指南后,回到这里继续往下看,你已经看到了运行中的Cactus并且准备好理解它背后的概念和它的全部的强大功能。
安装Cactus
Cactus没一个真正安装,因为Cactus是一个框架而不是一个应用程序。可是你需要理解它是如何集成 进你的工作环境中的。 为了简单集成这个工作,Cactus提供了several
integration modules。 所以,安装Cactus简单的意味着选择一个集成模块,并且学习如何配置和使用它。
系统需求
为了能运行Cactus测试,你的系统上必须已经安装下面的软件:
-
Java虚拟机一个Java1.2或以上版本兼容的虚拟机。注意,Servlet引挚的运行需要JVM,所以如果你使用了Servlet,你就必须已经安装了一个JVM。
-
Servlet/J2EE引挚一个符合Servlet 2.x/J2EE 1.x 规范的Servlet引挚,用来运行你的Cactus测试。
你也需要一个集成Cactus的开发工具。例如:你计划使用Ant集成,你就必须要安装一个Ant;如果你想从一个IDE上执行Cactus测试,那么这个IDE也是必须已经安装的;等等...
Cactus的文件
现在,你应该下载一个Cactus的分发包(选择你打算使用的J2EE API版本 ),然后将其解压到[cactus root]
目录。
你会在[cactus root]
找到下面的目录:
-
doc/
:包含了 Cactus网站和 API javadocs。
-
lib/
:包含了Cactus jars和相关的扩展库。
-
samples/
:包含了示例应用,展示如何写Cactus测试,如何自动执行它们。
-
samples/ejb
:包含了展示如何用Cactus写EJB单元测试的应用程序。
-
samples/jetty
:包含了展示如何用Cactus写Servlet和Jetty(使用JettyTestSetup
扩展)单元测试的应用程序。
-
samples/servlet
:contains a sample application showing how to test Servlet/JSPs/Taglibs with Cactus. 包含了展示如何用Cactus写Servlet/JSPs/Taglibs单元测试的应用程序。
-
web/
:包含了JSP redirector文件,如果你使用manual
integration时,你需要这个文件。
补充Cactus的Jar包是:
-
cactus.jar
: 主要的Jar包,包含了框架的类,你可以在[cactus root]/lib
下面找到它。
-
cactus-ant.jar
:这个Jar包包含了一些自定义的Ant任务,以便于更容易的跟Ant进行集成。它仅仅在你想使用Ant来自动运行Cactus测试时才需要。关于更多的将Cactus与Ant集成在一起的信息,请看Ant
Howto指南。你可在在[cactus root]/lib
下找到这个Jar包。
-
httpclient.jar
: Cactus 依赖Jakarta Commons HttpClient框架处理Cookie。
-
junit.jar
: Cactus扩展了JUnit,所以需要JUnit jar.
-
aspectjrt.jar
: Cactus 使用AspectJ完成了一些任务(记录方法的进入和退出,检查配置等等)。
-
commons-logging.jar
: Cactus 使用Jakarta Commons Logging 框架为Cacuts提供与现存的日志框架进行无缝的连接。 Commons HttpClient框架也需要它。
-
servletapi.jar
: 编译Servelt例子时需要它。最理想的是我们应该集成J2EE Jar包(编译EJB例子时会用到),可是Sun的license不允许我们再次分发它,所以你得自己下载去了(请看Sample
howto页面)。
-
httpunit.jar
:Cactus使用HttpUnit框架完成complex
assertions of returned responses。 Cactus也集成了一个默认的Web响应对象,但是HttpUnit被用来完成复杂的断言。
-
nekohtml.jar
: HttpUnit需要它。
Tomcat Quickstart forewords
本指南适用于Cactus1.4以及更高版本、Tomcat4.0以及其更高版本
本文档演示了如何在10分钟内(当然不包括下载时间^_^)在Tomcat上面安装和运行Cactus测试。
有两种方法可以使你在你的应用程序上执行Cactus测试:
- 把所有的Cactus Jar包放到你的 WEB-INF/lib目录下面,具体描述见Classpath
Tutorial,
- 把Cactus Jar包放到你的容器的classpath中,这样Cactus就会使用容器的Context类加载器加载它们了。本指南将会描述这个策略,这也是一种仅用比较的干扰就可以使很多Web应用程度共用Cactus的方法。
另外,有很多种途径可以触发Cactus测试的执行(请看TestRunner
Howto指南)。在本指南中,我们将要描述一种最简单的方式在浏览器上安装Cactus。
第1步到第3步是一个保证Cactus能够在Tomcat上运行的步骤,仅需安装一次。
第2步:拷贝Cactus Jar包
从Cactus download page下载Cactus的Jar包,这些Jar放在压缩文件的lib/
目录下。
将下面的Jar包拷贝到[tomcat-root]/common/lib
下面:
cactus.jar
commons-httpclient.jar
commons-logging.jar
junit.jar
aspectjrt.jar
第3步:修改 Tomcat web.xml文件
编辑[tomcat-root]/conf/web.xml
文件,将下面的内容放到文件开头的<webapp>
标签下面。
<servlet>
<servlet-name>ServletRedirector</servlet-name>
<servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>
<init-param>
<param-name>param1</param-name>
<param-value>value1 used for testing</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>ServletTestRunner</servlet-name>
<servlet-class>org.apache.cactus.server.runner.ServletTestRunner</servlet-class>
</servlet>
然后,在最后一个<servlet>
定义(除了我们上面的两个<servlet>,Tomcat还提供了一些。)后面加上下面的内容:
<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>
警告: Be careful when you modify the global Tomcatweb.xml
file. If later on you wish to use the Cactus Ant integration and more specifically if you use the<cactifywar>
Ant task, you may run into problems.
The<cactifywar>
task automatically adds the needed Cactus redirectors (thus they'll be added twice leading to an error.
第4步:建立一个简单的测试用的应用程序
现在,我们在服务器上建立一个非常非常简单的应用程序,以便于我们来对它进行单元测试。
首先,建立下面的目录结构:
[tomcat-root]/webapps
|_ test
|_ WEB-INF
|_ classes
接着,建立下面的SampleServlet.java
Java源文件,编译并将编译后的.class文件拷贝到[tomcat-root]/webapps/test/WEB-INF/classes
目录下面。
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
public class SampleServlet extends HttpServlet
{
public void saveToSession(HttpServletRequest request)
{
String testparam = request.getParameter("testparam");
request.getSession().setAttribute("testAttribute", testparam);
}
}
You'll notice that this isn't even a finished servlet ! However, this shows that you can start testing your code with Cactus even before you have finished writing it completely. Extreme Programmers should like this :-)
We're now read to create our first Cactus test case. Create the followingTestSampleServlet.java
java source file, compile it and copy the resulting .class file in[tomcat-root]/webapps/test/WEB-INF/classes
.
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;
public class TestSampleServlet extends ServletTestCase
{
public TestSampleServlet(String theName)
{
super(theName);
}
public static Test suite()
{
return new TestSuite(TestSampleServlet.class);
}
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"));
}
}
第5步:运行测试
Time to enjoy our hard work ! Start Tomcat by running[tomcat-root]/bin/startup.bat
(for windows) or[tomcat-root]/bin/startup.sh
(for unix).
Open a browser and point it athttp://localhost:8080/test/ServletTestRunner?suite=TestSampleServlet
You should see:
分享到:
相关推荐
NULL 博文链接:https://whythiszhao.iteye.com/blog/966494
CACTUS
The Cactus project is pleased to announce the release of version 1.7.2. Cactus is a unit testing framework for testing server side java code.
个人作品 6-Cactus.rar 需要的同学可以看看
cactus-report.xsl cactus-report.xsl cactus-report.xsl
jakarta-cactus-12-1.7.1.rar
Cactus是一个基于JUnit框架的简单测试框架,用来单元测试服务端Java代码。Cactus框架的主要目标是能够单元测试服务端的使用Servlet对象的Java方法如HttpServletRequest,HttpServletResponse,HttpSession等
有向cactus判定的证明,一个有向图是有向Cactus的三个充要条件。
请vs2013打开或者2015,用了.net4.5.2 ,Cactus1.5.x
cactus-1.8.1-bin.zip 对java web 进行单元测试
Cactus:设计师设计的静态站点生成器。使用Python和Django模板。
资源分类:Python库 所属语言:Python 资源全名:Cactus-3.1.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Cactus,Android Keep Alive(安卓保活),Cactus 集成双进程前台服务,JobScheduler,onePix(一像素),WorkManager,无声音乐,博客附件,效果请查看博客相对应项目。
一个变态的jar包,按照我当前的工程环境,应该在weblogic8底下,但就是找不到,所以只好在网上找了,记录在这里。 包含的类: org.apache.cactus.server.ServletTestRedirector
Cactus_1920x1080_50.rar
cactus
org.apache.cactus.eclipse.runner-1.8.0.jar
jar包,亲测可用
Cactus Sandwich Plain FM
Cactus Sandwich Fill FM