快速业务通道

分析JUnit框架的代码实现 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

分析JUnit框架的代码实现

时间:2011-10-13 IBM 何正华 徐晔

简介:本文细致地描述了 JUnit 的代码实现,在展示代码流程 UML 图的基础上,详细分析 JUnit 的 内部实现代码的功能与机制,并在涉及相关设计模式的地方结合代码予以说明。另外,分析过程还涉及 Reflection 等 Java 语言的高级特征。

概述

在测试驱动的开发理念深入人心的今天,JUnit 在测试开发领域的核心地位日渐稳定。不仅 Eclipse 将 JUnit 作为默认的 IDE 集成组件,而且基于 JUnit 的各种测试框架也在业内被广泛应用,并获得了 一致好评。目前介绍 JUnit 书籍文章虽然较多,但大多数是针对 JUnit 的具体应用实践,而对于 JUnit 本身的机制原理,只是停留在框架模块的较浅层次。

本文内容完全描述 JUnit 的细致代码实现,在展示代码流程 UML 图的基础上,详细分析 JUnit 的内 部实现代码的功能与机制,并在涉及相关设计模式的地方结合代码予以说明。另外,分析过程还涉及 Reflection 等 Java 语言的高级特征。

本文的读者应该对 JUnit 的基本原理及各种设计模式有所了解,主要是面向从事 Java 相关技术的设 计、开发与测试的人员。对于 C++,C# 程序员也有很好的借鉴作用。

Junit 简介

JUnit 的概念及用途

JUnit 是由 Erich Gamma 和 Kent Beck 编写的一个开源的单元测试框架。它属于白盒测试,只要将 待测类继承 TestCase 类,就可以利用 JUnit 的一系列机制进行便捷的自动测试了。

JUnit 的设计精简,易学易用,但是功能却非常强大,这归因于它内部完善的代码结构。 Erich Gamma 是著名的 GOF 之一,因此 JUnit 中深深渗透了扩展性优良的设计模式思想。 JUnit 提供的 API 既可以让您写出测试结果明确的可重用单元测试用例,也提供了单元测试用例成批运行的功能。在已经实 现的框架中,用户可以选择三种方式来显示测试结果,并且显示的方式本身也是可扩展的。

JUnit 基本原理

一个 JUnit 测试包含以下元素:

表 1. 测试用例组成

开发代码部分 测试代码部分 测试工具部分
待测试类 A 通过扩展 TestCase 或者构造 TestSuit 方法

编写测试类 B

一个测试运行器(TestRunner)R,可以选择图形界面或文本界面

操作步骤:

将 B 通过命令行方式或图形界面选择方式传递给 R,R 自动运行测试,并显示结果。

分析JUnit框架的代码实现(2)

时间:2011-10-13 IBM 何正华 徐晔

JUnit 中的设计模式体现

设计模式(Design pattern)是一套被反复使用的、为众人所知的分类编目的代码设计经验总结。使 用设计模式是为了可重用和扩展代码,增加代码的逻辑性和可靠性。设计模式的出现使代码的编制真正工 程化,成为软件工程的基石。

GoF 的《设计模式》一书首次将设计模式提升到理论高度,并将之规范化。该书提出了 23 种基本设 计模式,其后,在可复用面向对象软件的发展过程中,新的设计模式亦不断出现。

软件框架通常定义了应用体系的整体结构类和对象的关系等等设计参数,以便于具体应用实现者能集 中精力于应用本身的特定细节。因此,设计模式有助于对框架结构的理解,成熟的框架通常使用了多种设 计模式,JUnit 就是其中的优秀代表。设计模式是 JUnit 代码的精髓,没有设计模式,JUnit 代码无法 达到在小代码量下的高扩展性。总体上看,有三种设计模式在 JUnit 设计中得到充分体现,分别为 Composite 模式、Command 模式以及 Observer 模式。

一个简单的 JUnit 程序实例

我们首先用一个完整实例来说明 JUnit 的使用。由于本文的分析对象是 JUnit 本身的实现代码,因 此测试类实例的简化无妨。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号