注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > Java 内容正文:Java开源测试工具JUnit简介

Java开源测试工具JUnit简介

发布时间:2006-07-11 11:07:55 来源:cn-java 网友评论 0 条
  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中的标记。由于我们是在处理一个单独的类并且没有不明确的地方,因此仅显示模式的名称。


图1 TestCase应用Command

相关文章
  • Java开源构建工具ant简介
  • 面向Java开发人员的Ajax:Java对象序列化(1)
  • 常见的十四种Java开发工具及其特点(1)
  • 在LINUX下配置JAVA开发环境
  • Java开源IOC容器Fuse 0.2 Final发布
【评论】【收藏本文】【打印】【关闭】
上一篇文章:Java开源构建工具ant简介
下一篇文章:Java设计模式之工厂方法模式
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
Java控件设计入门
Java控件设计入门
推荐阅讯
  • 专家称Java在WEB开发领域处境危险
  • Java项目中使用Hibernate处理数据
  • 书评:Java的盛宴(下)
  • Java桌面应用程序设计:SWT简介(1)
  • J2EE应用程序中SQL语句自动构造方法
  • 快速建站工具Java SOS 4.75发布
  • 为什么是Java EE 5
  • “软件工业奥斯卡”SYS-CON读者选择奖:Java
  • Sun新掌门称Java将开放源码 未公布时间表
  • Java中使用JCOM操作Office对象
阅读排行
  • 1.Java连接SQL Server 2000
  • 2.Java文件操作详解
  • 3.Java控件设计入门
  • 4.Java操作Excel电子表格
  • 5.Java: JNI完全手册
  • 6.Java命令行简介
  • 7.开发J2EE应用应遵循的几点原则
  • 8.Servlet与Javabean配置
  • 9.Java规则引擎与其API应用详解
  • 10.CLASSPATH详解
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载