- 浏览: 44106 次
- 性别:
- 来自: 上海
最新评论
-
wangdgsc:
你好,我最近也在搞这个strutstest,不过遇到了一个问题 ...
使用cactus测试ssh应用(2) -
gsshcl:
(=ω=)哼哼~果然是人老了,看不清了啊~~~~
ubuntu修改tty分辨率
接1
接下来就是考虑如何测试struts了,之前使用的是servelttestcase,不能作为我实际应用的测试,不过有部分代码可以借鉴,那就是jetty的启动代码(事实上,在linux下,使用tomcat和jetty启动相差不了多少,时间都是耗在启动spring的beans上,当然测试下最好还是轻量级别比较好)。
尝试了cactusstrutstestcase和mockstrutstestcase,使用中发现,cactusstrutstestcase不查找begin开头的方法,另外还是那个config问题,所以最终我还是选择了mockstrutstestcase。
选择了mockstrutstestcase之后,按照要求调用了superclass的setup和teardown,按照strutstestcase网站上的例子(后来,我看了另外《Struts Recipes》,应该说这本比较适合我的这次测试,不过看的时候我的测试快要完成了……)启动,我知道这次启动肯定不会成功。
因为我把struts和spring整合过了,如果没有注入commonServices(我所调用的loginAction的服务接口)的话,是不能通过测试的。不过这次显示的是没有找到配置文件……靠着搜索引擎的帮助,我找到了一个英文版的cactus+struts测试的例子,我注意到里面提醒要设置上下文路径。因为例子中使用的是myeclipse编辑器(我以前用过,不过jsp编辑老是卡死,所以不用了)。我这里使用的是netbeans,其实有点类似,因为netbeans的工程结构和classpath不同,所以我必须设置上下文为工程的web(因为我并没有启动tomcat),那个netbeans放网页什么的地方。后来我发现这里其实也有提示:
http://www.blogjava.net/wangxq/archive/2005/08/22/10713.html
然后启动jetty出现了我想象的contextlistener问题。单纯没有注入的struts类应用是没有问题的,不过考虑到是ssh应用,我必须考虑如何注入。找如何启动spring上下文,注入其实花了我很长时间,吃过一顿中饭,然后一直想这个问题头很痛,又去睡了几个小时。醒来的时候重新找资料,解决问题。
真得很痛苦,找到了资料,然后测试,虽然头不疼了(估计是眼睛痛)。在javaeye的网站上找到了一篇可以使用的例子:
http://www.iteye.com/topic/18492
按照我的习惯修改了其中的代码,成功的界面:
接下来又是一个烦人的问题,就是假如我放入两个test,其实这个testsuite会启动两次(因为是在setup中启动webapplicationcontext),即使是jetty也会很浪费时间。spring+cactus其实资料不是非常正式,看到的都是要么偏spring(基本没有cactus代码的)或者偏cactus的。最终还是在搜索strutstestcase的时候找到了,找到了两篇,其实内容是一样的:
http://www.searchfull.net/1171468.html
http://tide2046.iteye.com/blog/210728
我注意到了里面的JunitHelper,然后复制了里面的代码,按照我自己的习惯修改了代码,最终测试结果如下:
到此基本上就完成了,最终的代码如下:
首先是保存webapplicationcontext的类(静态内容)
然后是启动jetty的类,实际测试过,貌似用swingui或者awtui会出错,不太清楚原因。
最后是有两个测试方法的类:
最后是所使用的包名:
接下来就是考虑如何测试struts了,之前使用的是servelttestcase,不能作为我实际应用的测试,不过有部分代码可以借鉴,那就是jetty的启动代码(事实上,在linux下,使用tomcat和jetty启动相差不了多少,时间都是耗在启动spring的beans上,当然测试下最好还是轻量级别比较好)。
尝试了cactusstrutstestcase和mockstrutstestcase,使用中发现,cactusstrutstestcase不查找begin开头的方法,另外还是那个config问题,所以最终我还是选择了mockstrutstestcase。
选择了mockstrutstestcase之后,按照要求调用了superclass的setup和teardown,按照strutstestcase网站上的例子(后来,我看了另外《Struts Recipes》,应该说这本比较适合我的这次测试,不过看的时候我的测试快要完成了……)启动,我知道这次启动肯定不会成功。
因为我把struts和spring整合过了,如果没有注入commonServices(我所调用的loginAction的服务接口)的话,是不能通过测试的。不过这次显示的是没有找到配置文件……靠着搜索引擎的帮助,我找到了一个英文版的cactus+struts测试的例子,我注意到里面提醒要设置上下文路径。因为例子中使用的是myeclipse编辑器(我以前用过,不过jsp编辑老是卡死,所以不用了)。我这里使用的是netbeans,其实有点类似,因为netbeans的工程结构和classpath不同,所以我必须设置上下文为工程的web(因为我并没有启动tomcat),那个netbeans放网页什么的地方。后来我发现这里其实也有提示:
http://www.blogjava.net/wangxq/archive/2005/08/22/10713.html
然后启动jetty出现了我想象的contextlistener问题。单纯没有注入的struts类应用是没有问题的,不过考虑到是ssh应用,我必须考虑如何注入。找如何启动spring上下文,注入其实花了我很长时间,吃过一顿中饭,然后一直想这个问题头很痛,又去睡了几个小时。醒来的时候重新找资料,解决问题。
真得很痛苦,找到了资料,然后测试,虽然头不疼了(估计是眼睛痛)。在javaeye的网站上找到了一篇可以使用的例子:
http://www.iteye.com/topic/18492
按照我的习惯修改了其中的代码,成功的界面:
接下来又是一个烦人的问题,就是假如我放入两个test,其实这个testsuite会启动两次(因为是在setup中启动webapplicationcontext),即使是jetty也会很浪费时间。spring+cactus其实资料不是非常正式,看到的都是要么偏spring(基本没有cactus代码的)或者偏cactus的。最终还是在搜索strutstestcase的时候找到了,找到了两篇,其实内容是一样的:
http://www.searchfull.net/1171468.html
http://tide2046.iteye.com/blog/210728
我注意到了里面的JunitHelper,然后复制了里面的代码,按照我自己的习惯修改了代码,最终测试结果如下:
到此基本上就完成了,最终的代码如下:
首先是保存webapplicationcontext的类(静态内容)
package cn.edu.shu.lehu.hako.tests.actions; import javax.servlet.ServletContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.web.context.support.XmlWebApplicationContext; import org.springframework.web.context.WebApplicationContext; /** * * @author xnnyygn */ public class SpringWebContextHelper { public static String[] Configuration_Location; private static XmlWebApplicationContext wac = null; private static ClassPathXmlApplicationContext fsxac = null; static { Configuration_Location = new String[]{ "/WEB-INF/spring-base.xml", "/WEB-INF/spring-services.xml", "/WEB-INF/spring-struts.xml"}; } public static void setWebApplicationContext(ServletContext context) { if (context.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE) != null) { return; } if (wac == null) { wac = new XmlWebApplicationContext(); wac.setServletContext(context); wac.setConfigLocations(Configuration_Location); wac.refresh(); } context.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); } }
然后是启动jetty的类,实际测试过,貌似用swingui或者awtui会出错,不太清楚原因。
package cn.edu.shu.lehu.hako.tests.actions; import junit.framework.Test; import junit.framework.TestSuite; import org.apache.cactus.extension.jetty.Jetty5xTestSetup; /** * * @author xnnyygn */ public class TestAllWithJetty { public static Test suite() { System.setProperty("cactus.contextURL", "your webapp url here"); TestSuite testSuite = new TestSuite("All test with jetty"); testSuite.addTestSuite(TestLoginAction.class); return new Jetty5xTestSetup(testSuite); } public static void main(String[] args) { junit.textui.TestRunner.run(TestAllWithJetty.suite()); } }
最后是有两个测试方法的类:
package cn.edu.shu.lehu.hako.tests.actions; import cn.edu.shu.lehu.hako.struts.forms.LoginForm; import java.io.File; import servletunit.struts.MockStrutsTestCase; /** * * @author xnnyygn */ public class TestLoginAction extends MockStrutsTestCase { private LoginForm loginForm = new LoginForm(); public TestLoginAction(String testName) { super(testName); } @Override protected void setUp() throws Exception { super.setUp(); setContextDirectory(new File("web")); SpringWebContextHelper.setWebApplicationContext(context); } @Override protected void tearDown() throws Exception { super.tearDown(); } public void testCorrectLogin() { setRequestPathInfo("/login"); loginForm.setUsername("username"); loginForm.setPassword("password"); setActionForm(loginForm); actionPerform(); verifyNoActionErrors(); } public void testInCorrectLogin() { setRequestPathInfo("/login"); loginForm.setUsername("username"); loginForm.setPassword("password2"); setActionForm(loginForm); actionPerform(); verifyInputForward(); } }
最后是所使用的包名:
引用
spring-mock-2.0-rc3.jar
commons-codec-1.3.jar
aspectjrt-1.5.3.jar
cactus-core-framework.uberjar.jar
httpunit.jar(这个不清楚是否必须)
junit-3.8.2.jar
org.mortbay.jetty-5.1.9.jar
strutstest-2.14.jar
commons-codec-1.3.jar
aspectjrt-1.5.3.jar
cactus-core-framework.uberjar.jar
httpunit.jar(这个不清楚是否必须)
junit-3.8.2.jar
org.mortbay.jetty-5.1.9.jar
strutstest-2.14.jar
评论
1 楼
wangdgsc
2009-08-12
你好,我最近也在搞这个strutstest,不过遇到了一个问题,就是怎样让strutsTestCase能访问web-inf/struts/struts-config.xml文件,我使用的是myEclipse,不知道你能不能帮我一下,谢谢
发表评论
-
groovy in action 笔记 2
2009-08-06 19:30 772这里看的时间稍微长了一点,从43到100页,看起来还算顺。 ... -
groovy console readInt
2009-08-03 09:24 1523手中有一本groovy的教程,是那本不算厚的来自某个外国大学的 ... -
linux下用aptana“代替”dreamwaver
2009-07-29 09:25 1548好久没有来这里写东西,主要还是在twitter和自己学校论坛活 ... -
jspwiki+glassfish(zip)
2009-07-04 06:01 1148使用glassfish的zip包原因是要模拟在服务器上配置gl ... -
随想0702
2009-07-02 21:21 658早上首先考虑如何替换glassfish的admin的密码,监视 ... -
初识glassfish
2009-07-01 18:59 891以前XY一直使用的是apache+tomcat的配置。tomc ... -
ubuntu9.04上编译安装firefox 3.5(shiretoko)
2009-07-01 09:55 3560昨天,也就是6月30日,firefox 3.5正式发布了,不过 ... -
S60手机使用putty进行ssh登录
2009-06-30 08:03 2216在同学的介绍下,了解到putty居然有s60版本。正好xy的手 ... -
使用抓虾
2009-06-22 07:28 737最近寻找RSS的时候,发现了一个不错的网站,抓虾。 本来XY是 ... -
EBVIEW和DICTCN
2009-06-05 13:48 1046EBVIEW EBVIEW是一个不错的日文字典,在gnome- ... -
vsftpd安装与配置
2009-06-05 12:55 942以下主要是作为备忘。 从ftp://vsftpd.beast ... -
解决了不小心删除synaptic的问题
2009-06-05 04:12 930首先通过 sudo apt-get install synap ... -
重新安装电脑
2009-06-05 03:00 761这次相比几个星期以前的重装不同在于确定了基本上不使用windo ... -
哎,果然还是无法和C++断绝关系阿
2009-05-30 20:28 772XY不喜欢C++,是有原因的.不过XY不想去回忆自己为什么会讨 ... -
Firefox,网站开发第二个IDE
2009-05-30 19:17 880取这个标题,并不是为了 ... -
现在要找一本适合的书难啊
2009-05-30 13:54 719理论上来说,现在的书越来越多,应该更加容易找到适合自己的书才对 ... -
使用cactus测试ssh应用(1)
2009-02-21 19:23 2325最近拿到了《Junit In Acti ... -
尝试使用edtftpj遍历FTP服务器上的列表
2008-12-13 16:09 2002edtFTPj提供了一个简易的构建FTP客户端的方法集合。现在 ...
相关推荐
首先,Cactus并非一种植物,而是Java Web应用的单元测试框架。它由Apache软件基金会开发,其核心理念是让开发者能够在服务器环境中执行单元测试,而不是在客户端或模拟环境中。这是因为Web应用的许多逻辑与服务器...
Jakarta Cactus是Java开发中的一个开源框架,主要用于Web应用程序的服务器端单元测试。这个"jakarta-cactus-12-1.7.1.rar"压缩包文件包含了Cactus框架的1.7.1版本,这是一个针对Jakarta项目第12次发布的重要更新。 ...
2. **文档**:可能包含用户指南、API文档和其他帮助文档,这些文档详细介绍了如何配置和使用Cactus进行单元测试。 3. **示例**:可能提供了一些示例项目,展示了如何设置Cactus测试,并且演示了如何针对不同类型的...
4. Cactus:Cactus是一个用于在服务器环境中进行单元测试的框架,主要针对Java EE应用。它允许开发者在应用服务器内部运行测试,减少了部署到服务器进行测试的需要,提高了测试效率。 5. DbUnit:DbUnit是一个Junit...
Cactus是一个基于JUnit框架的简单测试框架,用来单元测试服务端Java代码。Cactus框架的主要目标是能够单元测试服务端的使用Servlet对象的Java方法如HttpServletRequest,HttpServletResponse,HttpSession等
结合以上技术,项目通过Ant脚本来构建和部署应用,使用Cactus在EJB和Struts的环境下运行单元测试。DbUnit确保了测试数据的一致性,而StrutsTest则专门针对Struts组件进行测试。最后,JMeter进行性能测试,以验证系统...
在本文中,我们将深入探讨如何使用一系列技术和工具,如EJB、Struts1.3、Ant、Cactus、DbUnit、JMeter以及StrutsTest,来实现一个完整的测试流程,针对一个基于Java的企业级应用程序进行全面的测试。这些技术在软件...
Cactus与Servlet容器紧密集成,通过拦截Servlet调用来执行测试代码,大大简化了Web应用的测试流程。 二、源码结构分析 Cactus的源码主要包含以下几个部分: 1. **Cactus Core**:这是Cactus的核心模块,实现了与...
CACTUS字体如果是商业产品,用户需要确保有合法使用权。 5. 字体应用:字体在网站设计、图形设计、排版、广告、UI设计等多个领域都有广泛应用。CACTUS字体可能特别适合生态、户外或自然主题的设计项目。 6. 字体...
这种集成方式使得开发者能够更方便地使用Cactus来进行测试工作。 #### Cactus的独特之处 除了支持传统的单元测试之外,Cactus还具备了一些独特的特性: - **Ant支持**:虽然本文不会详细展示这一特性,但Cactus的...
使用Cactus,开发者可以快速构建具备安全控制和内容管理的Web应用程序。在VS2013或VS2015这样的开发环境中,Cactus提供了便捷的集成开发体验。 首先,让我们深入理解MVC模式。MVC是一种设计模式,将应用程序分为三...
为了充分利用这个压缩包,首先需要下载并使用解压工具(如WinRAR、7-Zip等)来打开。在确保来源可靠的情况下,可以查看每个文件,阅读文档,运行程序,或欣赏设计作品。如果涉及到编程代码,可以尝试理解其结构和...
JUnit是Java领域广泛使用的单元测试框架,它的Testcase类用于定义测试用例,每个用例包含一系列测试方法,比较实际结果与预期输出,确保代码逻辑正确。TestSuite类则可以组合多个Testcase或TestSuite,实现对多个类...
**2. Django模板引擎** Django是Python世界中的一个著名Web框架,它的模板系统允许开发者分离设计与逻辑,使设计师可以专注于页面的视觉呈现。Cactus集成Django模板,意味着用户可以利用其强大的模板语法,如控制...
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.
### 有向Cactus判定的证明 #### 一、引言 有向Cactus图是一种特殊的有向图,其中每条边至多属于一个简单环。...这种方法为解决实际问题提供了一种新的思路和技术手段,对于理解和应用有向Cactus图具有重要意义。
Cactus库的主要目标是简化Web应用的开发过程,提供了一组工具和框架,使得构建复杂的网络服务变得简单。这个库可能包含了模板引擎、路由系统、中间件支持以及数据库集成等功能,这些都是构建Web应用的基础模块。...
cactus-report.xsl cactus-report.xsl cactus-report.xsl