JUNIT 的学习
随着 XP 软件工程技术的广泛推广,单元测试的作用在软件工程中变得越来越重要,
而一个简明易学、适用广泛、高效稳定的单元测试框架则对成功的实施单元测试有着至关重
要的作用。在 java 编程语句环境里,Junit Framework 是一个已经被多数 java 程序员采用和
实证的优秀的测试框架。下面我们就来聊聊这个工具。
在 Junit 单元测试框架的设计时,作者一共设定了三个总体目标,第一个是简化测
试的编写,这种简化包括测试框架的学习和实际测试单元的编写;第二个是使测试单元保持
持久性;第三个则是可以利用既有的测试来编写相关的测试。从这三个目标我们可以看出,
单元测试框架的基本设计考虑依然是从我们现有的测试方式和方法出发,而只是使测试变得
更加容易实施和扩展并保持持久性。因此编写单元测试的原则可以从我们通常使用的测试方
法借鉴和利用。在我们通常的测试中,一个单元测试一般针对于特定对象的一个特定特性,
而系统的状态是由同一时刻时系统内部的各个分立的部件的状态决定的,因此为了确定一个
系统最终的行为符合我们起始的要求,我们首先需要保证系统内的各个部分的状态会符合我
们的设计要求,所以我们的测试单元的重点应该放在确定对象的状态变换上。然而需要注意
的并不是所有的对象组特征都需要被编写成独立的测试单元,我们一般只需要在一些有可能
引入错误的地方引入测试单元,通常这些地方存在于有特定边界条件、复杂算法以及需求变
动比较频繁的代码逻辑中。当然除了这些特性需要被编写成独立的测试单元外,还有一些边
界条件比较复杂的对象方法也应该被编写成独立的测试单元。
好了到此大家应该对 junit 有了一个概要的了解。下面我们看一下它的用法。
1、
基本使用步骤。Junit 的使用非常简单,它的基本使用步骤:
z 创建,从 junit.framework.TestCase 派生 unit test 需要的 test case
z 书写测试方法,提供类似于如下函数签名的测试方法: public void testXXXXX();
z 编译,书写完 test case 后,编译所写的 test case 类
z 运行,启动 junit test runner,来运行这个 test case。
2、
setUp 与 tearDown。这两个函数是 junit framework 中提供初始化和反初始化每个测
试方法的。setUp 在每个测试方法调用前被调用,负责初始化测试方法所需要的测试环境;
tearDown 在每个测试方法被调用之后被调用,负责撤销测试环境。它们与测试方法的关
系可以描述如下: 测试开始 -> setUp -> testXXXX -> tearDown ->测试结束
3、 组装 TestSuite,运行更多的 test。在 junit 中,Test、TestCase 和 TestSuite 三者
组成了 composite pattern。通过组装自己的 TestSuite,可以完成对添加到这个 TestSuite
中的所有的 TestCase 的调用。而且这些定义的 TestSuite 还可以组装成更大的 TestSuite,
这样同时也方便了对于不断增加的 TestCase 的管理和维护。 它的另一个好处就是,可以
从这个 TestCase 树的任意一个节点(TestSuite 或 TestCase)开始调用,来完成这个节
点以下的所有 TestCase 的调用。提高了 unit test 的灵活性。
4、 使用例子(以 Money 这个类为例进行说明):
评论0