Cactus是一套简单,易于使用的服务器端测试框架,可以使开发人员很轻松的测试服务器端的程序。
Cactus是Junit的一个扩展,但是它又和Junit有一些不同。Cactus的测试分为三种不同的测试类别,JspTestCase,ServletTestCase,FilterTestCase,而不是像Junit就一种TestCase。
Cactus的测试代码有服务器端和客户端两个部分,他们协同工作。在测试服务器端的应用时,Cactus和Junit相比有什么优势呢?
一般EJB或者servlet,jsp都是运行在服务器上,如果你使用junit测试的话,你的测试是在客户端,这使的运行环境和测试环境处于不同的系统环境中,这个有时候会不同的测试结果。
EJB2.0中的Local interface ,不允许远程调用。用Junit不好测试,而Cactus的redirector位于服务器端,可以和EJB运行在一个容器中,这使得它可以直接访问Local Interface。
在一个EJB的应用中,一般都会有一些前端应用来访问EJB,例如:jsp,servlet,javabean。这就意味着你需要一个测试框架来测试这些前端的组件。Cactus提供了所有这些组件的测试方法。
Cactus和ant很好的结合在一起,可以很容易的完成自动化测试,减少了很多工作量。
一、工作原理
1、JUnit Test Runner调用YYYTestCase.runTest(),这个方法寻找beginXXX(ServletTestRequest )
2、YYYTestCase.runTest()打开一个到Redirector Proxy的HTTP连接
3、Redirector Proxy进行如下操作
创建Test class的实例
创建一些Server对象(HttpServletRequest、ServletConfig、ServletContext)的Cactus wrapper如果需要,创建一个HTTP Session
4、Redirector
Proxy通过Reflection,执行Test类的setUP()、testXXX()、tearDown()
5、testXXX()调用Server side classes的方法,并通过JUnit的assert API来验证测试结果
6、如果测试失败,testXXX()方法抛出例外,Redirector Proxy会捕获例外
7、Redirector Proxy向客户端返回例外的有关信息,JUnit会将这些信息打印出来
8、如果没有发生例外,YYYTestCase.runTest()寻找并执行endXXX(HttpURLConnection),在这儿你可以使用JUnit asserts检查返回的HTTP Header、servlet output stream
Servlet Redirector Proxy
客户端打开2个HTTP连接,一个用于执行测试并取回Servlet输出流;另一个取回测试结果。测试结果被存储在一个变量中,并被放置到ServletContext供第二个连接取回。
JSP Redirector Proxy
客户端打开2个连接,一个用于连接JSP Redirector执行test,取回JSP输出流;第二个连接Servlet Redirector取回test结果。测试结果同样被存储在一个变量中,并被放置到ServletContext供第二个连接取回。
文字:http://www.qqread.com/app-soft/b170820111.html
更多内容请看FTP服务器、双核服务器技术、网站服务器的选型专题,或进入讨论组讨论。
相关专题
- 四步玩转风行,尽享看的乐趣 (23次浏览)
- 小型企业网络管理技术完全实用手册 (21次浏览)
- 如何打造“数字黄河”安全管理网络 (19次浏览)
- 网络管理百问系列:不能上网问题集 (14次浏览)
- 构建面向未来的IP承载网网络管理系统 (13次浏览)
- 三招酷技助你玩转风行 (12次浏览)
- 网络管理员 你要自己解放自己! (12次浏览)
- 企业网络课:浅谈网络架构的管理 (11次浏览)
- 网络管理员学习必备集锦 (11次浏览)
- 网络管理百问系列:IP地址问题集 (9次浏览)



