您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > junit
了解JUnit核心類(lèi)、接口及生命周期
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/8/29 15:25:33 ] 推薦標(biāo)簽:

Junit 從問(wèn)世至今已有 12 年的歷史,期間功能不斷完善,用戶(hù)逐漸擴(kuò)大,已經(jīng)成為 Java 軟件開(kāi)發(fā)中應(yīng)用為廣泛的測(cè)試框架。本文著重介紹 JUnit 的核心接口、核心類(lèi)以及 TestCase 的生命周期,以便讀者從架構(gòu)層面掌握這個(gè)工具。

1997 年,Erich Gamma 和 Kent Beck 為 Java 語(yǔ)言創(chuàng)建了一個(gè)簡(jiǎn)單但有效的單元測(cè)試框架,稱(chēng)作 JUnit。JUnit 很快成為 Java 中開(kāi)發(fā)單元測(cè)試的框架標(biāo)準(zhǔn)。世界上無(wú)數(shù)軟件項(xiàng)目使用它。本文將介紹 JUnit 的核心接口,核心類(lèi)以及 JUnit 的生命周期。

JUnit 核心接口及核心類(lèi)

了解 JUnit 的生命周期之前,先了解 JUnit 的核心接口和類(lèi)是有必要的,這對(duì)于了解 TestCase 的生命周期有很大的幫助。

    Test:是 TestCase、TestSuite 的共同接口。run(TestResult result) 用來(lái)運(yùn)行 Test,并且將結(jié)果保存到 TestResult。

    TestCase:Test 的接口的抽象實(shí)現(xiàn),是 Abstract 類(lèi),所以不能實(shí)例化,能被繼承。其中一個(gè)構(gòu)造函數(shù) TestCase(String name),根據(jù)輸入的參數(shù),創(chuàng)建一個(gè)測(cè)試實(shí)例。參數(shù)為該類(lèi)的以 test 開(kāi)頭的方法名,把它添加到 TestSuite 中,指定僅僅運(yùn)行 TestCase 中的一個(gè)方法。

    TestSuite:實(shí)現(xiàn) Test 接口?梢越M裝一個(gè)或者多個(gè) TestCase。待測(cè)試類(lèi)中可能包括了對(duì)被測(cè)類(lèi)的多個(gè) TestCase,而 TestSuit 可以保存多個(gè) TestCase,負(fù)責(zé)收集這些測(cè)試,這樣可以一個(gè) Suite 能運(yùn)行對(duì)被測(cè)類(lèi)的多個(gè)測(cè)試。

    TestResult:保存 TestCase 運(yùn)行中的事件。TestResult 有 List<TestFailure> fFailures 和 List<TestFailure> fErrors。fFailures 記錄 Test 運(yùn)行中的 AssertionFailedError,而 fErrors 則記錄 Exception。Failure 是當(dāng)期望值和斷言不匹配的時(shí)候拋出的異常,而 Error 則是不曾預(yù)料到的異常,如:ArrayIndexOutOfBoundsException。

    TestListener:是個(gè)接口,對(duì)事件監(jiān)聽(tīng),可供 TestRunner 類(lèi)使用。

    ResultPrinter:實(shí)現(xiàn) TestListener 接口。在 TestCase 運(yùn)行過(guò)程中,對(duì)所監(jiān)聽(tīng)的對(duì)象的事件以一定格式及時(shí)輸出,運(yùn)行完后,對(duì) TestResult 對(duì)象進(jìn)行分析,輸出的統(tǒng)計(jì)結(jié)果。

    BaseTestRunner:所有 TestRunner 的超類(lèi)。

    java Junit.swingui.TestRunner:實(shí)現(xiàn) BaseTestRunner,提供圖形界面。從 4.0 版本起,沒(méi)有再提供這個(gè)類(lèi)。這是 4.0 版本和之前版本的顯著變化之一。

    java Junit.textui.TestRunner:實(shí)現(xiàn) BaseTestRunner,提供文本界面。下面將以它做為例子講解 JUnit 生命周期。

TestCase 實(shí)例

了解了前面的幾個(gè)類(lèi),下面將看一個(gè)例子:

Java代碼

    public class TestShoppingCart extends TestCase {  
        double unitPrice = 5;  
        int quantity = 6;  
        double discount=0.2;  
     
        @Before  
        public void setUp() throws Exception {  
            System.out.println(" Up ");  
        }  
     
        @After  
        public void tearDown() throws Exception {  
            System.out.println(" Down ");  
        }  
         
        public void testPay() {  
            double total = unitPrice * quantity;  
            assertEquals(30, total);  
        }  
         
        public void testPayWithDiscount() {  
            double total = unitPrice * quantity*(1-discount);  
            assertEquals(24.0, total);  
        } 
    } 

上一頁(yè)1234下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd