zoukankan      html  css  js  c++  java
  • Junit内部解密之三: 单元测试用例运行的全过程

    转自:http://blog.sina.com.cn/s/blog_6cf812be0100x8sb.html

    我们以一个非常简单的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对象,看下图:

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



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

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

    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方法,所以只调用一次,请看下图:

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

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

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

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

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

  • 相关阅读:
    multiprocessing 源码解析 更新中......
    loadrunner 更新中......
    Java IO
    echarts水球图小数点不显示问题+组件默认值
    双柱表格组件
    表格生成后修改echarts图表样式
    vue中引入单张图片+两张壁纸手动切换
    配置全局组件
    vue使用babel-plugin-import按需引入Ant Design View + babel-plugin-component按需引入element-ui
    vue深浅拷贝的思索
  • 原文地址:https://www.cnblogs.com/daxiong2014/p/4501189.html
Copyright © 2011-2022 走看看