您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
Junit内部解密
作者:网络转载 发布时间:[ 2013/4/11 13:36:09 ] 推荐标签:

   Junit内部解密之: 单元测试用例运行的全过程

  我们以一个非常简单的TestCalculator类为例,只有一个测试方法:

  Public class TestCalculator extends TestCase

  {

  Public void testAdd()

  {

  Calculator calculator = new Calculator();

  Double result = calculator.add(10, 50);

  assertEquals(60, result);

  }

  }

  当我们使用Run in Junit 的时候,之前说到过的几个核心类之间是怎么运行的呢?我们先看下基本过程:

  TestRunner启动界面框 —》创建一个TestSuite ––》创建一个TestResult—》执行testadd方法。

  由于我们的TestCalculator测试类里面没有显式的suite方法,大部分情况下都是类似,这样的话,TestRunner创建了一个默认的TestSuite对象,看下图:

  那么同时TestRunner还需要创建包含测试结果(成功,失败或出错)的TestResult对象,具体过程如下:

  1.开始的时候,TestRunner实例化了一个TestResult对象,在测试顺序执行的时候,这个对象将用于保存测试结果。

  2.TestRunner向TestResult注册,是add一个监听器,这样的话在执行测试过程中,TestRunner可以收到各种事件,TestResult会广播如下方法:测试开始(startTest); 测试失败(addFailure); 遇到测试错误(addError); 测试结束(endTest)

  3.知道了这些事件后,TestRunner可以随着测试的进行而显示进度条了,并且在失败或错误的时候显示出来。

  4.TestRunner通过调用TestSuite的run(TestResult)方法来开始测试

  5.TestSuite为它所拥有的每个Test Case实例调用run(TestResult)方法。

  6.Test Case使用传递给它的TestResult实例来调用其run(Test)方法,并把自身作为参数传递给run方法,这样TestResult 立马可以用runBare()来回调它。

  接着是执行测试方法了:

  这里需要说明的是对于每个TestCase都会调用runBare()方法,这里只有一个testAdd方法,所以只调用一次,请看下图:

 

  1.runBare()方法将调用setUp, testAdd, teardown 方法,顺序执行。

  2.如果调用3个方法的过程出现任何失败或错误,那么TestResult会分别调用addFailure 和addError来通知它的所有Listener。

  3.这样TestRunner会收到这些错误或失败,也会罗列出这些错误,否则进度条是绿色的,让你知道测试方法没有问题。

  4.当tearDown方法执行完后,测试也完成了,TestResult 会通过调用endTest把这个结果通告给所有的Listener。

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