您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
用JUnit框架实现Java单元测试
作者:网络转载 发布时间:[ 2013/2/17 16:04:40 ] 推荐标签:

  随着软件项目的逐渐增大,软件测试在软件开发中的地位显得越来越重要。如果软件项目没有良好的测试流程,随着系统的增大,无论项目管理人员还是软件开发人员都会对项目的前景失去信心,甚至会对项目的目标产生分歧,因为长期以来没有对程序代码和系统设计进行有效的控制,很多问题都被暂时掩盖或逐渐演化成其他的问题。软件开发周期越长,会使得问题进化的版本越多,后造成的结果是“剪不断,理还乱”。
  单元测试是整个测试流程中基础的部分,它们要求程序员尽可能早地发现问题,并给予控制,这是其一。另外,如果集成测试出现问题,它们可以帮助诊断。这样为在软件开发流程中建立高效的事件反应机制打下了坚实基础。

  JUnit是为Java程序开发者实现单元测试提供一种框架,使得Java单元测试更规范有效,并且更有利于测试的集成。
  JUnit的内部结构
  JUnit的软件结构
  JUnit 共有七个包,核心的包是junit.framework 和junit.runner。Framework包负责整个测试对象的构架,Runner负责测试驱动。
  JUnit的类结构
  JUnit有四个重要的类:TestSuite、TestCase、TestResult、TestRunner。前三个类属于Framework包,后一个类在不同的环境下是不同的。这里使用的是文本测试环境,所以用的是 junit.textui.TestRunner。各个类的职责如下:
  1.TestResult,负责收集TestCase所执行的结果,它将结果分为两类,客户可预测的Failure和没有预测的Error。同时负责将测试结果转发到TestListener(该接口由TestRunner继承)处理;
  2.TestRunner,客户对象调用的起点,负责对整个测试流程的跟踪。能够显示返回的测试结果,并且报告测试的进度。
  3.TestSuite, 负责包装和运行所有的TestCase。
  4.TestCase, 客户测试类所要继承的类,负责测试时对客户类进行初始化,以及测试方法调用。
  另外还有两个重要的接口:Test和TestListener。
  1.Test, 包含两个方法:run() 和countTestCases(),它是对测试动作特征的提取。
  2.TestListener, 包含四个方法:addError()、addFailure()、startTest()和endTest(),它是对测试结果的处理以及测试驱动过程的动作特征的提取。
  下面给出的两个类图(篇幅有限,只显示主要部分)很好地阐明了类之间的关系,以及junit的设计目标(如图1)。测试案例的类采用Composite模式。这样,客户的测试对象转变成一个“部分—整体”的层次结构。客户代码仅需要继承类TestCase,可以轻松的与已有的其他对象组合使用,从而使得单元测试的集成更加方便。

图1 测试结构图

图2是测试跟踪类图。

  图2左边TestSuite包含了测试对象集合,右边包含了测试结果集。具体如何处理结果,以及包含哪些测试对象,并没有立即得出结论,而是尽量地延迟到具体实现的时候。例如,实现接口TestListener的JUnit中含有:junit.awtui.TestRunner、junit.swingui. TestRunner、junit.ui.TestRunner等,甚至客户用自己的类实现TestListener,从而达到多样化的目的。
   
  
  从以上两个类图,可以了解JUnit对单元测试的基本思路,这个框架的核心是结果集和案例集。  

软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd