JUnit 4.0体验

JUnit 是 Java 语言事实上的 标准单元测试库。JUnit 4 是该库三年以来最具里程碑意义的一次发布。它的新特性主要是通过采用 Java 5 中的标记(annotation)而不是利用子类、反射或命名机制来识别测试,从而简化测试。在本文中,执着的代码测试人员 Elliotte Harold 以 JUnit 4 为例,详细介绍了如何在自己的工作中使用这个新框架。注意,本文假设读者具有 JUnit 的使用经验。

JUnit 由 Kent Beck 和 Erich Gamma 开发,几乎毫无疑问是迄今所开发的最重要的第三方 Java 库。正如 Martin Fowler 所说,“在软件开发领域,从来就没有如此少的代码起到了如此重要的作用”。JUnit 引导并促进了测试的盛行。由于 JUnit,Java 代码变得更健壮,更可靠,bug 也比以前更少。JUnit(它本身的灵感来自 Smalltalk 的 SUnit)衍生了许多 xUnit 工具,将单元测试的优势应用于各种语言。nUnit (.NET)、pyUnit (Python)、CppUnit (C++)、dUnit (Delphi) 以及其他工具,影响了各种平台和语言上的程序员的测试工作。

然而,JUnit 仅仅是一个工具而已。真正的优势来自于 JUnit 所采用的思想和技术,而不是框架本身。单元测试、测试先行的编程和测试驱动的开发并非都要在 JUnit 中实现,任何比较 GUI 的编程都必须用 Swing 来完成。JUnit 本身的最后一次更新差不多是三年以前了。尽管它被证明比大多数框架更健壮、更持久,但是也发现了 bug;而更重要的是,Java 不断在发展。Java 语言现在支持泛型、枚举、可变长度参数列表和注释,这些特性为可重用的框架设计带来了新的可能。

JUnit 的停滞不前并没有被那些想要废弃它的程序员所打败。挑战者包括 Bill Venners 的 Artima SuiteRunner 以及 Cedric Beust 的 TestNG 等。这些库有一些可圈可点的特性,但是都没有达到 JUnit 的知名度和市场占有份额。它们都没有在诸如 Ant、Maven 或 Eclipse 之类的产品中具有广泛的开箱即用支持。所以 Beck 和 Gamma 着手开发了一个新版本的 JUnit,它利用 Java 5 的新特性(尤其是注释)的优势,使得单元测试比起用最初的 JUnit 来说更加简单。用 Beck 的话来说,“JUnit 4 的主题是通过进一步简化 JUnit,鼓励更多的开发人员编写更多的测试。”JUnit 4 尽管保持了与现有 JUnit 3.8 测试套件的向后兼容,但是它仍然承诺是自 JUnit 1.0 以来 Java 单元测试方面最重大的改进。

 注意:该框架的改进是相当前沿的。尽管 JUnit 4 的大轮廓很清晰,但是其细节仍然可以改变。这意味着本文是对 JUnit 4 抢先看,而不是它的最终效果。

测试方法

以前所有版本的 JUnit 都使用命名约定和反射来定位测试。例如,下面的代码测试 1+1 等于 2:

import junit.framework.TestCase;
public class AdditionTest extends TestCase {
  private int x = 1;
  private int y = 1;
  public void testAddition() {
   int z = x + y; assertEquals(2, z);
  }
}

而在 JUnit 4 中,测试是由 @Test 注释来识别的,如下所示:

import org.junit.Test;
import junit.framework.TestCase;
public class AdditionTest extends TestCase {
  private int x = 1;
  private int y = 1;
  @Test public void testAddition() {
   int z = x + y;
   assertEquals(2, z);
  }
}

使用注释的优点是不再需要将所有的方法命名为 testFoo()、testBar(),等等。例如,下面的方法也可以工作:

import org.junit.Test;
import junit.framework.TestCase;
public class AdditionTest extends TestCase {
  private int x = 1;
  private int y = 1;
  @Test public void additionTest() {
   int z = x + y; assertEquals(2, z);
  }
}

下面这个方法也同样能够工作:

import org.junit.Test;
import junit.framework.TestCase;
public class AdditionTest extends TestCase {
  private int x = 1;
  private int y = 1;
  @Test public void addition() {
   int z = x + y; assertEquals(2, z);
  }
}

时间: 2024-09-20 00:26:24

JUnit 4.0体验的相关文章

Web2.0体验式广告效果评估的三个层次四个维度

网络广告是web2.0必不可少的盈利来源.然而对于web2.0网站而言,互动.参与.个性化不仅是其网站的特点,也是web2.0体验式广告的重要标签.那么以在线体验活动为特征的网络广告,其衡量绩效标准又应该如何设置呢?根据一点观察和思考,和大家分享一点想法. 网站体验类广告,其构成要远比单一展示类广告复杂.从网站层次上看,其构成主要包括三个层次,一是广告引导标签.二是活动内容展示页面.三是体验操作页面.三个层次需要不同的指标来衡量透视.说个例子形象些,以"雪花啤酒勇闯天涯之极地探索"的系

【as3】ActionScript 3.0体验试教学视频教程

很不错的视频教程 原文地址:http://blog.sina.com.cn/s/blog_3ecb9b1101009nx0.html 全屏观看地址: 视频1地址 视频2地址   教案发布: ActionScript 3.0 体验试教学--Making Things Move 第一部分 AS动画基础第一章 基础动画概念第二章 ActionScript 3.0 动画基础第三章 三角学应用第四章 渲染技术 第二部分 基础运动第五章 速度与加速度第六章 边界与摩擦力第七章 交互运动:让物体动移动 第三部

centos7.0体验与之前版本的不同

centos7.0体验与之前版本的不同 [编者注]本文作者作为一个CentOS 6过来的系统管理员,在第一次体验CentOS 7时,种种不适,不禁泪目... 今天下午,没事干,在一台机器上装了一个centos7玩一玩,发现与之前版本有很大不同,不知道rhel7是不是也是这样,毕竟现在centos属于redhat了. 装机 首先是装机时,以前的rhel一系的(包括centos,fedora)选包都可以全选的,但现在是只能单选一项了,有子选项重复的:当装到选择分区时,centos7推荐的分区是xfs

怎样为品牌增加2.0体验?

建设品牌的方法正在发生变化,如果你还在为企业做品牌形象的写真,那就有点落伍了,1.0营销的品牌形象,正逐步让位于2.0营销的品牌体验.  那什么是营销2.0的品牌体验呢?我在今年6月所引用的一篇文章中,有这样的文字概括:让"品牌 + 一种元素",形成一种消费者体验.这个元素可以是一个产品.一种服务.一个消费情景或者一种生活方式. 这是近期比较代表的三个例子: * NIKE在慢跑鞋中加入一个计录芯片,顾客可以将自己的慢跑纪录发上社区,和他人进行分享和交流,这样一来,NIKE的鞋就不仅代表

全新iOS7设计 查找我的iPhone 3.0体验

抛开苹果AppStore中拥有大量优秀的第三方App不谈,其实苹果自家推出的应用有些也的确值得一用,例如iCloud.iWork套件 等等.在本月22日,苹果针对自家的查找我的iPhone功能进行了全面升级,功能界面上的改变让这款应用更加贴合苹果iOS7整体的设计方式.下面我们 就通过对比的方式来看看新版查找我的iPhone3.0界面.功能上都有怎样的变化.查找我的iPhone3.0体验界面对比:首 先来观察一下界面上的差异.我们看到全新的 3.0版本界面上的改变是和之前复古的风格差异很明显,整

查信息找优惠更方便 大众点评V5.0体验

大众点评Android V5.0体验前言:对于目前的PC用户的话,估计大众点评网应该都或多或少的接触过.汇集了海量商家信息的它,已经成为了人们出行.吃饭.购物等活动之前重要的参考网站.而当智能手机逐渐兴起的时候,大众点评无疑变得更为重要了.大众点评 Android平台5.0版体验对于小编而言,与大众点评交集最多的就是--吃,附近有什么没吃过的好馆子,去了一家不怎么熟悉的馆子究竟点哪些菜,这些几乎情况下,大众点评都会给小编一个满意的答案.而在移动互联网时代,我们开始随时随地的接入网络.当计划赶不上

Web2.0体验式网站设计的关键点

开发"> Web2.0时代,体验式营销,体验式网站设计开始走向主流,那么体验式网站到底意味着什么?具体表现在那些地方?周末,根据建站的一点经验和 观察,也参照了网友的一些建议,总结了体验式网站设计的四各方面,41个关键体验点,将其梳理概况,但仍是较为粗浅,欢迎补充建议.(老早的一篇文章,但 还是挺实用的) 体验式网站设计的四个方面 1.视觉体验:呈现给用户视觉上的体验,重在UI设计,强调舒适性. 2.浏览体验:呈现给用户栏目和内容的体验,重在合理规划,强调协调性. 3.信任体验:呈现给用户

腾讯界面设计工具UIDESIGNER2.0体验报告

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 腾讯UIDesigner2.0发布了,发布前还饶有趣味的弄了个倒计时,吊足了大家的口味啊! 先来介绍一下这个软件 简介 UIDesigner,简称"UID",是腾讯 CDC(用户研究与体验设计部)团队研发的一款进行软件界面原型设计的工具.它具有团队协作.整合设计流程.版本管理.快速原型等特性,拥有强大的模板和预制功能,能够

norton360全能特警4.0体验推介

问题描述 最近赋闲在家,过着米虫的生活.老婆每天上学,我就每天在家里看电影逛论坛打魔兽,偶尔发两封求职信也不知道什么时候能有回音,心情就像三月里的忧伤小雨,钱包也哗啦啦的渐渐清减,不知什么时候是个尽头.直到有一天关雎兄打来一电话,说是自己最近在学校里搞了一个电脑门市,除了一般的卖碟卖配件,主打的就是[专业人士为你介绍最合适的杀毒软件].我问了问那个专业人士是谁,他说是他自己.呸,这家伙以前是办国学班的,我还去给他代讲过一节<荀子>,怎么摇身一变成门市小业主了?"随便啦你去下个试用版的