JUnit一个回归测试框架用于Java开发人员编写单元测试

通过本文的介绍,您可以了解到什么是 J">Unit,它有什么用处,JUnit 4.10 有什么新特性,并且如何应用。

JUnit 是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework),主要供 Java 开发人员编写单元测试。在极限编程和重构中被极力推荐使用的一个工具,因为它可以大大地提高开发的效率。那么大家就要问了,测试代码如何提高开发效率呢?不错,编写测试代码本身就是一件费时费力的事情,它的好处究竟在哪里呢?

使用 JUnit 的好处主要有那么几点:

对于极限编程而言,在编写代码之前写测试代码,这样强制要求程序员在写代码之前好好的思考代码的功能和逻辑,写一点测一点就可以避免回归错误的发生,对于重构而言也是相同的。 可以使测试代码与产品代码分开。 针对某一个类的测试代码通过较少的改动便可以应用于另一个类的测试。 易于集成到测试人员的构建过程中,JUnit 和 Ant 的结合可以实施增量开发。 JUnit 是公开源代码的,可以进行二次开发。 可以方便地对 JUnit 进行扩展。

了解了 JUnit 的一些好处之后,我们来看一下 JUnit 的框架组成:

对测试目标进行测试的方法与过程集合,可称为测试用例 (TestCase)。 测试用例的集合,可容纳多个测试用例 (TestCase),将其称作测试包 (TestSuite)。 测试结果的描述与记录 (TestResult) 。 测试过程中的事件监听者 (TestListener)。 每一个测试方法所发生的与预期不一致状况的描述,称其测试失败元素 (TestFailure) 。 JUnit
Framework 中的出错异常(AssertionFailedError)。

JUnit 4.10 的新功能介绍

JUnit 自面世以来,陆陆续续发布了很多个版本。2011 年 10 月份,JUnit 4.10 发布。它对于之前的版本究竟有些怎样的不同呢?又会带来怎样的一些好处呢?下面我们将为您揭晓。

RuleChain

首先,让我们先来认识一下 Rule。在 JUnit4.7 中已经引入了新特性 Rule,总的来说,Rule 是 JUnit 的一种扩展机制,它可以很灵活的添加或重新定义每个测试方法或类的行为,测试人员能重新利用或扩展 JUnit 提供的规则,也可以定义自己的规则。

在 JUnit 4.10 中又引入了一个新的特性 RuleChain,用来组织和排序 Rule。下面一些代码来做一个直观的演示。

清单 1. RuleChain 演示代码

public class LoggingRule implements TestRule { private final String note; public LoggingRule(final String note) { this.note = note; } public Statement apply(final Statement base, final Description description) { System.out.println("rule applied: " + note);// 当 rule 被使用时进行打印 return base; } } public class TestWithRuleChain { @Rule // 通过打印 log 来记录在 rulechain 下 rule 的执行顺序 public TestRule chain = RuleChain.outerRule(new LoggingRule("outer")) .around(new LoggingRule("middle")) .around(new LoggingRule("inner")); @Test public void testSomeMethod() { System.out.println("test started"); } }

运行的结果如下:

rule applied: inner rule applied: middle rule applied: outer test started

我们可以看到 RuleChain 里规则的执行顺序,最内层的规则最先被执行完。例子中的方法 outerRule 返回一个 TestRule,这个方法通常作为 RuleChain 的起始点。方法 around 会创建并返回一个新的 RuleChain,会在当前 RuleChain 的基础上将下一个规则包含进来。

时间: 2024-08-29 21:47:21

JUnit一个回归测试框架用于Java开发人员编写单元测试的相关文章

Boost Graph Library一个通用图库用于C++开发人员

关于计算的公理表达通常颇具争论.然而,现代计算最重要的理论支柱之一的图论并不是这些公理表达之一.无数工程领域(从设计路由器和网络到设计构成移动设备核心的芯片)都是图论的应用. 作为 C++++ 应用程序软件http://www.aliyun.com/zixun/aggregation/7155.html">开发人员,我们通常需要直接将实际工程问题转化成一个等价的图论问题.如果有一个可靠的基于 C++ 的通用图库,就可以帮助我们实现这个转换,这样的图库显然非常受欢迎:Boost Graph

针对 Java 开发人员的 C# 编程语言

编程 本文讨论 Java 和 C# 之间的异同点,目的在于当迁移到 .NET 时,让 Java 开发人员掌握所涉及的一些知识.Java 和 C# 之间的主要相似点是: • Java 和 C# 都源于 C++,并且共有 C++ 的一些特征. • 两种语言都需要编译成中间代码,而不是直接编译成纯机器码.Java 编译成 Java 虚拟机 (Java Virtual Machine, JVM) 字节码,而 C# 则编译成公共中间语言 (Common Intermediate Language, CIL

从代码构建到性能分析,Java开发人员的首选工具

Java 由于其实用性.跨平台性.可移植性等众多优点一直备受开发者青睐,在各大编程语言排行榜中也一直居高不下,因此本文为 Java 开发者们总结了这八个工具,它们几乎涵盖了Java开发的全部范围,从代码构建到错误压缩.这些工具可以帮助您提高代码的质量,并成为更高效的Java开发人员. 集成开发环境 Eclipse Eclipse是著名的跨平台的自由集成开发环境(IDE).最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具. Eclipse

面向Java开发人员的Ajax:结合Direct Web Remoting使用Ajax

理解 Ajax 编程的基本知识 是重要的,但是如果正在构建复杂的用户界面,那么能够在更高层次的抽象上工作也很重要.在面向 Java 开发人员的 Ajax 系列的第 3 篇文章中,我在上个月的 Ajax 的数据序列化技术 基础之上,介绍一种可以避免繁琐的 Java 对象序列化细节的技术. 在 上一篇文章 中,我介绍了如何用 JavaScript 对象标注(JSON)以一种在客户机上容易转化成 JavaScript 对象的格式对数据进行序列化.有了这个设置,就可以用 JavaScript 代码调用远

面向Java开发人员的Ajax:Java对象序列化(1)

ajax|java对象 本文我们讨论 Ajax 开发的基础知识,但是将侧重于许多 Java Web 开发人员最关心的问题:为客户机生成数据. 多数 Java 开发人员已经把模型-视图-控制器(MVC)模式应用在他们的 Web 应用程序上.在传统的 Web 应用程序中,视图组件由 JSP 或者其他表示技术(例如 Velocity 模板)构成. 这些表示组件动态地生成全新的 HTML 页面,替代用户以前正在查看的页面,从而更新用户界面.但是,在 Java Web 应用程序使用 Ajax UI 的情况

面向Java开发人员的Ajax: Ajax的Java对象序列化

在这个系列的 第一篇文章 中,我介绍了 Ajax 的构造块: 如何用 JavaScript XMLHttpRequest 对象从 Web 页面向服务器发送异步请求. 如何用 Java servlet 处理和响应请求(向客户机返回 XML 文档). 如何在客户端用响应文档更新页面视图. 这一次,我将继续讨论 Ajax 开发的基础知识,但是将侧重于许多 Java Web 开发人员最关心的问题:为客户机生成数据. 多数 Java 开发人员已经把模型-视图-控制器(MVC)模式应用在他们的 Web 应用

面向Java开发人员的Ajax:构建动态的Java应用程序

在 Web 应用程序开发中,页面重载循环是最大的一个使用障碍,对于 Java 开发人员来说也是一个严峻的挑战.在这个系列中,作者 Philip McCarthy 介绍了一种创建动态应用程序体验的开创性方式.Ajax(异步 JavaScript 和 XML)是一种编程技术,它允许为基于 Java 的 Web 应用程序把 Java 技术.XML 和 JavaScript 组合起来,从而打破页面重载的范式. Ajax(即异步 JavaScript 和 XML)是一种 Web 应用程序开发的手段,它采用

面向Java开发人员的Ajax:探索 Google Web Toolkit

最近发布的 Google Web Toolkit (GWT) 是一组全面的 API 和工具,它支持用户几乎完全使用 Java 代码来创建动态 Web 应用程序.Philip McCarthy 回到了他广受欢迎的面向 Java 开发人员的 Ajax 系列,向您展示 GWT 能做什么,并帮助您确定它是否适合您. GWT(请参阅 参考资料)采用了一种不寻常的方式进行 Web 应用程序开发.它没有采用客户端和服务器端代码库的普通隔离,而是提供了一个 Java API,该 API 允许创建基于组件的 GU

浅谈Java开发人员对JCP感觉失望的原因

其中一种感觉就是JCP已经失去了它的吸引力,它不再是被当成针对解决问题的社区,相反,它只是被看成是一些大公司所利用的鉴定规范通过的橡皮图章.这些大公司凭着自身的钱势和力量来指定各种规范从而达到满足自己的利益. "这与有些官僚机构很相似,只不过是JCP在短时间出现这样的发展显得过于迅速." Redwood城市的Infravio公司的CTO,MukundBalasubramanian谈到JCP时,他这样说到,"现在有太多的程序员和公司都卷入JCP,每天都开发很多软件,每天都有大量