设计模式(Design pattern)是一套被反复使用的、为众人所知的分类编目的代码设计经验总
结。使用设计模式是为了可重用和扩展代码,增加代码的逻辑性和可靠性。设计模式的出
现使代码的编制真正工程化,成为软件工程的基石。
GoF 的《设计模式》一书首次将设计模式提升到理论高度,并将之规范化。该书提出了
23 种基本设计模式,其后,在可复用面向对象软件的发展过程中,新的设计模式亦不断
出现。
软件框架通常定义了应用体系的整体结构类和对象的关系等等设计参数,以便于具
体应用实现者能集中精力于应用本身的特定细节。因此,设计模式有助于对框架 结构的
理解,成熟的框架通常使用了多种设计模式,JUnit 就是其中的优秀代表。设计模式是
JUnit 代码的精髓,没有设计模式,JUnit 代码无法达到在小代码量下的高扩展性。总体上
看,有三种设计模式在 JUnit
设计中得到充分体现,分别为 Composite 模式、Command 模
式以及 Observer 模式。
一个简单的 JUnit 程序实例
我们首先用一个完整实例来说明 JUnit
的使用。由于本文的分析对象是 JUnit 本身的
实现代码,因此测试类实例的简化无妨。本部分引入《 JUnit in Action
》中一个 HelloWorld
级别的测试实例,下文的整个分析会以该例子为基点,剖析 JUnit 源代码的内部流程。
待测试类如下:
图 1. 待测试代码
该类只有一个 add 方法,即求两个浮点数之和返回。
下面介绍测试代码部分,本文以 JUnit3.8 为实验对象,JUnit4.0 架构类同。笔者对原
书中的测试类做了一些修改,添加了一个必然失败的测试方法 testFail,目的是为了演示
测试失败时的 JUnit 代码流程。
完整的测试类代码如下:
图 2. 测试类代码