动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息



本月文章推荐
.JBuilder2005 Servlet开发之自启.
.setUTCMinutes 方法.
.专稿:实战EJB之四 开发实体CMP(.
.感受JDO 2.0查询语言的特点.
.关于Java异常处理机制的深入理解.
.JAR进阶(下).
.Remove 方法.
.Java Socket编程(五)简单的WEB.
.java技术分析.
.JavaBean调用示例(转).
.java新手入门学习指导之最佳方向.
.JBuilder 2005开发Applet游戏全接.
.Java入门(12) 事件与错误处理.
.Java 编程技术中汉字问题的分析及.
.使用RMI和CORBA进行分布式程序设.
.java ee5平台java持久化开发(ej.
.简析JAVA的XML编程.
.深入浅析Tomcat配置技巧Top10.
.在JAVA中连接Oracle数据库.
.你能过关吗?J2EE面试题集锦(附答.

Java开源测试工具JUnit简介

发表日期:2008-1-5 |



  1.简介

  在一篇早些的文章(请参见Test Infected: Programmers Love Writing Tests, Java Report, July 1998, Volume 3, Number 7)中,我们描述了如何使用一个简单的框架来编写可重复的测试。在本文中我们将匆匆一瞥其内中细节,并向你展示该框架本身是如何被构造的。

  我们细致地研究JUint框架并思考如何来构造它。我们发现了许多不同层次上的教训。在本文中,我们将尝试着马上与它们进行沟通,这是一个令人绝望的任务,但至少它是在我们向你展示设计和构造一件价值被证实的软件的上下文中来进行的。

  我们引发了一个关于框架目标的讨论。在对框架本身的表达期间,目标将重复出现许多小的细节中。此后,我们提出框架的设计和实现。设计将从模式(惊异,惊异)的角度进行描述,并作为美丽的程序来予以实现。我们总结了一些优秀的关于框架开发的想法。

  2.什么是JUnit的目标呢?

  首先,我们不得不回到开发的假定上去。假如缺少一个程序特性的自动测试(automated test),我们便假定其无法工作。这看起来要比主流的假定更加安全,主流的假定认为假如开发者向我们保证一个程序特性能够工作,那么现在和将来其都会永远工作。

  从这个观点来看,当开发者编写和调试代码时,它们的工作并没有完成,它们还要必须编写测试来演示程序能够工作。然而,每个人都太忙,他们要做的事情太多,他们没有充足的时间用于测试。我已经有太多的代码需要编写,要我如何再来编写测试代码?回答我,强硬的项目经理先生。因此,首要目标就是编写一个框架,在这个框架中开发者能够看到实际来编写测试的希望之光。该框架必须要使用常见的工具,从而学习起来不会有太多的新东西。其不能比完全编写一个新测试所必须的工作更多。必须排除重复性的工作。

  假如所有测试都这样去做的话,你将可以仅在一个调试器中编写表达式来完成。然而,这对于测试而言尚不充分。告诉我你的程序现在能够工作,对我而言并没有什么帮助,因为它并没有向我保证你的程序从我现在集成之后的每一分钟都将会工作,以及它并没有向我保证你的程序将依然能够工作五年,那时你已经离开了很长的时间。

  于是,测试的第二个目标就是生成可持续保持其价值的测试。除原作者以外的其他人必须能够执行测试并解释其结果。应该能够将不同作者的测试结合起来并在一起运行,而不必担心相互冲突。

  最后,必须能够以现有的测试作为支点来生成新的测试。生成一个装置(setup)或夹具(fixture)是昂贵的,并且一个框架必须能够对夹具进行重用,以运行不同的测试。哦,还有别的吗?

  3.JUnit的设计

  JUnit的设计将以一种首次在Patterns Generate Architectures(请参见"Patterns Generate Architectures", Kent Beck and Ralph Johnson, ECOOP 94)中使用的风格来呈现。其思想是通过从零开始来应用模式,然后一个接一个,直至你获得系统架构的方式来讲解一个系统的设计。我们将提出需要解决的架构问题,总结用来解决问题的模式,然后展示如何将模式应用于JUnit。

  3.1 由此开始-TestCase

  首先我们必须构建一个对象来表达我们的基本概念,TestCase(测试案例)。开发者经常在头脑中存在着测试案例,但在实现它们的时候却采用了许多不同的方式-

  · 打印语句

  · 调试器表达式

  · 测试脚本

  假如我们想要轻松地操纵测试,就必须将它们构建成对象。这将会获取到一个仅仅是隐藏在开发者头脑中的测试,并使之具体化,其支持我们创建测试的目标,即能够持续地保持它们的价值。同时,对象的开发者比较习惯于使用对象来进行开发,因此将测试构建成对象的决定支持我们的目标-使测试的编写更加吸引人(或至少是不太华丽)。

  Command(命令)模式(请参见Gamma, E., et al. Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, Reading, MA, 1995)则能够比较好地满足我们的需求。摘引其意图(intent),“将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求进行排队或记录请求日志...”Command告诉我们可以为一个操作生成一个对象并给出它的一个“execute(执行)”方法。以下代码定义了TestCase类:

public abstract class TestCase implements Test {

}
  因为我们期望可以通过继续来对该类进行重用,我们将其声明为“public abstract”。暂时忽略其实现接口Test的事实。鉴于当前设计的需要,你可以将TestCase看作是一个孤立的类。

  每一个TestCase在创建时都要有一个名称,因此若一个测试失败了,你便可识别出失败的是哪个测试。

public abstract class TestCase implements Test {
 private final String fName;

 public TestCase(String name) {
  fName= name;
 }

 public abstract void run();
  …
}
  为了阐述JUnit的演变过程,我们将使用图(diagram)来展示构架的快照(snapshot)。我们使用的标记很简单。其使用包含相关模式的尖方框来标注类。当类在模式中的角色(role)显而易见时,则仅显示模式的名称。假如角色并不清楚,则在尖方框中增加与该类相关的参与者的名称。该标记可使图的混乱度降到最小限度,并首次见诸于Applying Design Patterns in Java(请参见Gamma, E., Applying Design Patterns in Java, in Java Gems, SIGS Reference Library, 1997)。图1展示了这种应用于TestCase中的标记。由于我们是在处理一个单独的类并且没有不明确的地方,因此仅显示模式的名称。


上一篇:关于J2EE中死锁问题的研究 人气:352
下一篇:AOP下的权限控制实现 人气:458
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-9 顶级域名交易系统 v3.0 完整版
2008-7-9 ACTCMS网站管理系统 v2.0 Build
2008-7-9 Roclog v3.1.4 build 20080706
2008-7-9 乐彼网上开店系统(56770 Eshop)
2008-7-9 深度学习alexa排名提升专家 v1.0
2008-7-9 BBSXP 2008 Build 8.0.5 正式版
2008-7-9 一句话快速信息发布系统 修正完美
2008-7-9 ACTCMS网站管理系统 v2.0 Build
2008-7-9 乐涛涛留言本 08版
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 GoodCalculator2.0版固件计算器
2008-7-5 RepoName源地址搜索工具 v1.21b
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 TouchCopy多媒体管理软件 v3.13完
2008-7-5 VideosTone视频铃声 v1.1汉化破解
2008-7-5 TouchPad触摸板 v4.44破解版
2008-7-5 VideosTone破解补丁 v1.0
2008-7-5 Feeds GoogleReader客户端 v0.4.3


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報