XP 单元测试工具Junit 源代码学习

发表于:2008-02-02来源:作者:点击数: 标签:单元测试工具junit
Package framework Class Interface Hierachy Interface Test 主要方法 countTestCases:统计TestCases 数目 run:运行 测试 并将结果返回到指定的TestResult 中 Class Assert 首先,Assert 提供的public 方法都可以带或不带自己定义的提示,其次Assert 中的
 Package framework
       Class & Interface Hierachy

       Interface Test
       主要方法
   countTestCases:统计TestCases 数目
   run:运行测试并将结果返回到指定的TestResult 中
       Class Assert
       首先,Assert 提供的public 方法都可以带或不带自己定义的提示,其次Assert
中的Assert 方法是protected 的,这意外着Assert 是一个静态类,它提供的方法都是Static 的。
       public 方法:
   assert:保留(deprecated)方法,判断一个条件是否为真
   assertTrue:assert 的替代方法,判断一个条件是否为真
   assertEquals:用于判断实际值和期望值是否相同(Equals),可以是各种JAVA
对象。
   assertNotNull:判断一个对象是否不为空
   assertNull:判断一个对象是否为空
   assertSame:判断实际值和期望值是否为同一个对象( ==),注意和assertEquals
区分
   fail:直接返回失败,抛出AssertionFailedError
       private 方法:
   failNotEquals:主要用于assertEquals 方法,调用fail 返回失败提示
   failNotSame:主要用于assertSame 方法,调用fail 返回失败提示
       Class AssertionFailedError
   AssertionFailedError 是从Jdk 提供Error 类简单继承而来,主要方法如下:
   public AssertionFailedError (String message) {
   super (message);
   }
   Class Assert 中比较失败都是抛出AssertionFailedError。
       Interface Protectable
   这个接口是使用了一种比较少见的用法。
在Interface 本身只定义了一个方法
   public abstract void protect() throws Throwable;注意方法throws 的是所有Error 和Exception 的祖先。通过这种定义可以保证运行的时候如果出现任何Error 和Exception,都将被抛出而不会导致程序不能继续运行。
   Portectable 的接口没有被framework 包中的任何类实现,它的使用在类
   TestResult 中的run 方法中。以下是run 方法中代码:
   protected void run(final TestCase test) {
   startTest(test);
   Protectable p= new Protectable() {
   public void protect() throws Throwable {
   test.runBare();
   }
   };
   runProtected(test, p);
   endTest(test);
   }
   这里实际是声明了一个Anonymous Classes,实现了Interface Portectable
       Interface TestListener
   TestListener 的用途和它名称一样,用于监听。主要用于运行时刻监听,BaseRunner(所有运行类,如TestRunner)实现了这一接口。由于运行是通过TestResult 来实现,只要调用 TestResult.addListener 就可以增加监听,TestResult会调用接口中相应的方法,具体见TestResult。
主要方法:
       public
   addError:增加错误,注意这里错误应该指测试程序本身的错误或者被测试程
序错误,而不是测试失败
   addFailure:增加一个测试失败,专用于AssertionFailedError 的处理
   endTest:结束测试
   startTest:开始测试
       Class TestCase
使用者最主要使用的类,继承Class Assert,实现Interface Test。主要方法
      

原文转自:http://www.ltesting.net