您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
了解JUnit核心類、接口及生命周期
作者:網絡轉載 發(fā)布時間:[ 2013/8/29 15:25:33 ] 推薦標簽:

TestResult

TestResult 有兩個 List,用來記錄 Exception 和 Failure。捕獲 runBare() 拋出的 Exception,首先判斷是否為 AssertionFailedError,是則調用 addFailure() 把,把異常加到 fFailures。否則則并調用 addError() 方法,把異常加到 fErrors 中。

catch (AssertionFailedError e) {
    addFailure(test, e);
}
catch (ThreadDeath e) { // don't catch ThreadDeath by accident
    throw e;
}
catch (Throwable e) {
    ddError(test, e);
}

TestListener

前面提到 result 加上了一個 ResultPrinter,ResultPrinter 會記錄運行中的所有 Exception,并且實時地以不同的格式輸出。當所有的 Test 都運行完畢后,ResultPrinter 會對 result 進行分析,首先輸出運行的時間,接著 printError() 輸出 fErrors 的個數,printFailures() 則輸出 fFailures 的個數。PrintFooter() 根據 result.wasSuccessful(),如果成功,則打印 OK 和 test 運行的總次數,如果失敗,則打印出 test 總的運行的個數,失敗和錯誤的個數。

參數一的統(tǒng)計輸出結果:

    
Time: 0.016
There was 1 failure:
1) testPay(TestShoppingCart)junit.framework.AssertionFailedError:
expected:<30> but FAILURES!!!
Tests run: 2,  Failures: 1,  Errors: 0

 

清單一:

Java代碼

    synchronized void print(TestResult result, long runTime) {  
        printHeader(runTime);  
        printErrors(result);  
        printFailures(result);  
        printFooter(result);  
    }  

清單二:

Java代碼

    protected void printFooter(TestResult result) {  
        if (result.wasSuccessful()) {  
            getWriter().println();  
            getWriter().print("OK");  
            getWriter().println (" (" + result.runCount() + " test"  
                + (result.runCount() == 1 ? "": "s") + ")");  
     
        } else {  
            getWriter().println();  
            getWriter().println("FAILURES!!!");  
            getWriter().println("Tests run: "+result.runCount()+  
                ",  Failures: "+result.failureCount()+  
                ",  Errors: "+result.errorCount());  
        }  
        getWriter().println();  
    }  

完整生命周期

整個生命周期將在下圖顯示:

上一頁1234下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd