|
|||||
![]() |
|||||
| 您现在的位置: 软件测试时代 >> 自动测试技术 >> 其他工具 >> 文章正文 |
|
||||||||||
| 基于Junit2.0的StrutsTestCase应用 | ||||||||||
作者:未知 文章来源:网络 点击数: 更新时间:2007-4-29 ![]() |
||||||||||
|
在我的前一篇文档《测试驱动的开发是重要的》中说过我要写一些测试框架应用方面的文档,今天我要实现我的诺言之一,这篇文章是介绍StrutsTeseCase的,熟悉并采用struts的开发员曾经一定有过这样一个困扰:我的action如何进行测试?(不是说要“测试先行”么?),如果没有一个可行的测试框架那我的struts环境去哪里模拟(方便的、透明的去模拟)?不要着急,接下来的部分我要向你们介绍这样一种可以满足我们要求的测试框架:strutstestcae。 ——写在前面 主要内容介绍: 1. StrutsTeseCase是什么? 2. 它的“家”在哪里? 3. 如何让它来为我们工作?(伴随说明:我到底该实施“测试先行”?) 4. 兼容struts1.1开发员 5. 参考资源
“由于在这里没有牵涉到Struts以及Junit入门的知识,所以我假定这篇文章的读者都是有struts开发经验的开发员并熟悉Junit。” 第一部分:StrutsTestCase是什么?
StrutsTestCase是基于Junit的一个方便测试struts框架的测试框架。它提供模拟对象(Mock Object)和Cactus两种方式来“真实”的运行Struts ActionServlet,它允许你在不启动servlet 引擎的情况下测试你的struts代码。因为strutstestcase可以用ActionServlet来测试你的代码,所以它不光可以测试你的action,同时它也可以测试你的(容器中的?)mapping,frombeans以及forwards声明。我前面曾提到过它对我们开发员来说是“透明的”,因为象action,mapping,form beans 以及forward等等,我们真的可以象在常规的XXXAction中一样在我们的测试代码中随意的使用它们。 在最新的版本中它还提供了对tiles和多模块(struts1.1中的功能)的测试。 哇,是不是很奇妙,不要着急,我们很快就可以领略到的它的妙处。 第二部分:它的“家”在哪里? 就象许许多多的开源项目一样,StrutsTestCase的家也在“sourceforge.org”(我们伟大的sourceforge就象一个繁忙的峰槽一样J),你可以通过http://sourceforge.net/project/showfiles.php?group_id=39190来下载它得最新版本。 JavaDoc: http://strutstestcase.sourceforge.net/api/index.html 热点论坛:http://sourceforge.net/forum/forum.php?forum_id=121751 常见问题:http://strutstestcase.sourceforge.net/faq.htm 第二部分:如何让它来为我们工作? “模仿测试(Mock Testing)VS 容器内测试(In-Container Testing)” 通常测试服务器端代码有两种比较常用的测试方法: 模仿对象(mock objects)它通过假设服务器端容器来达到测试效果; 容器内测试(in-container testing),它则是在真实的容器内达到测试效果; 而我们的StrutsTestCase则在对你的测试代码最小影响下能分别扮演上边两种角色。因此我们不得不说到它的这两种实现是如何完成的? StrutsTestCase提供两种基类(他们分别继承标准的Junit TestCase): MockStrutsTestCase: 通过名字也可以知道他是通过第一中方法在不启动servlet的条件下来模仿一些HttpServlet实现假设容器环境的。 CactusStrutsTestCase: 它是体现在容器内测试(真实环境测试)的,其通过另外一种测试框架(Cactus testing framework:http://jakarta.apache.org/cactus)struts代码。
Ps:本文中牵涉的代码都是通过第一中方法(继承MockStrutsTestCase)来完成测试的,要想用CactusStrutsTeseCase你只要简单的让测试代码继承CactusStrutsTeseCase即可。 下面我们着重讲解MockStrutsTestCase是为我们工作的? 首先我们先看看一个简单的LoginAction的简化代码:
上边LoginAction完成一个简单的登陆意图,从client搜集登陆数据(用户名和密码),然后做一个验证,如果验证有误返回登陆页;如果登陆成功返回成功页(或业务工作平台)并把用户姓名放入session。 那我们就从上边这个简单的程序入手: 首先,我们应该创建一个测试用例TestLoginAction,其基本架子是这样的: (请记住此时上边LoginAction的代码你还没有写,并且struts_config.xml中的关于LoginAction的actionmapping也是没有的,这些东西我们要经过边测试边写,但一定是先写测试,天啊,什么都还没有我该怎样测试啊,不要急,且看下去,J)
首先我们头脑总中有这样一个actionmapping(注意只是假设的):
有了这样一个假设,我们就可以从测试代码入手:
上边是一个简单的测试代码,好,运行!他此时肯定是通不过的,首先我们的java代码还没有写,struts-config.xml还没有配,那么,现在你可以现在做这些事情:“用最简单的做法或代码让上边那个测试通过。” 第三部分:兼容struts1.1开发员 下面说写和struts1.1相关的内容:测试tiles和多模块! 测试tiles 假设我们的actionmapping中有这样forward到tiles的情况,如下:
同时tiles_defs.xml中有相应配置:
那么我们在测试代码中可以如下测试tiles
测试多模块: 关于多模块的测试我希望能在下面代码的注释部分给你一个大概的介绍:
|
||||||||||
| 文章录入:working 责任编辑:seanhe | ||||||||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | ||||||||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| JUnit best practices 应用JUnit实施单元测试 追求代码质量: JUnit 4 与 T… 介绍Junit,一个用来在项目中… Junit概述 用Junit Framework编写单元测… 测试对象串行化--容易被遗漏… Junit的多线程测试 JUnit 4 抢先看 追逐代码质量:决心采用 FIT |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 关于我们 | 用户登录 | | |
| 版权所有(C) 2003-2007 测试时代 北京慧灵科技有限公司 站长:测试时代(TestAge.net) | |