NetBeans 5.0 單元測試實踐

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
1 引言:

        任何一個程序員都知道單元測試的 重要性,沒有經過嚴格測試的模塊是“靠不住”的,組裝過程會出現越來越多的Bug,甚至到了客戶那裏都不能正常工作,這簡直就是一場災難。雖然每個程序員 都深刻的知道這點,但是很多時候在進度的壓力下,程序員不得不放棄部分甚至是全部的單元測試。特別是在我國現在的國情下,獻禮項目太多,建設方的領導爲了 在某個“有意義”的日子裏使項目上線,往往迫使軟件開發方違背客觀事實,在不可能的工期內完工。程序員作爲項目的最底層人員,自然沒有力量來進行反抗,當 他們加班加點都無法在規定時間完成,於是放棄測試就成爲了他們的唯一選擇。

        很快這就成爲一個惡性循環:壓力越大,編寫的測試越少。編寫的測試越少,的效率越低,並且代碼越不穩定。而效率越低並且越不精確,開發人員就感覺越有壓力。

        程序員的精力就在這樣的惡性循環中被耗費掉。想要打破它需要一種外界的影響。所謂的這種外界的影響,其實就是一個簡單的測試框架,它可以讓我們通過做很少的測試,來達到完整的測試,減少我們編寫測試代碼的時間。

    2 NetBeans 5.0對單元測試的支持

        NetBeans IDE 5.0 引入了對基於 NetBeans 平臺的 IDE 模塊和富客戶端程序開發的全面支持,直觀的全新 GUI Builder Matisse,經過重新設計的對 CVS 的新支持,對 Sun Application Server 8.2、Weblogic9 和 JBoss 4 的支持,以及很多的編輯器增強功能。同時集成了Java開發工具中應用最廣泛的單元測試工具Junit,使得在NetBeans下進行單元測試變得簡單容易,提高了程序員進行單元測試的積極性。

        可以使用 NetBeans IDE 創建以下類型的測試:

        空測試:沒有測試方法的測試框架,尚未指定要測試的任何類。

    •現有類的測試:包含實際測試方法的類,這些方法鏡像了要測試的源的結構。

    •測試套件:彙集在一起的幾組測試類,允許對整個應用程序或項目進行測試。

        可以使用以下方法生成並找到測試:在“項目”窗口中選擇任何類或包節點,然後從“工具”> "JUnit" 菜單中進行選擇。NetBeans 將單元測試表示爲子樹,這些子樹反映了項目的 Java 包結構。每個測試類都由它所測試的類的名稱後Test 單詞組成(如 MyClassTest.java)。
每 個項目都有一個缺省的測試包,所有的測試文件都在測試包內被組織。程序文件與測試文件被分割成兩個獨立的部分,在項目下分爲一個SRC文件夾和一個 TEST文件夾,互相不產生影響,測試完成後,只需要將SRC文件夾單獨移開,並不需要TEST文件夾的支持。包結構如下圖:

        

3 被測試模塊的編寫

[NextPage]

        新建一個Java類庫的項目,項目名稱爲:MoneyChange,新建包moneychange,在包中添加類Money.class。(爲了閱讀方便,下面代碼中原來的註釋已經被刪除)
 package moneychange;

    public class Money {

        private int fAmount;
        private String fCurrency;
        public Money(int amount,String currency) {
           fAmount=amount;
           fCurrency=currency;
        }
        public int amount()
        {
           return fAmount;
        }
        public String currency()
        {
           return fCurrency;
        }
        public Money add(Money m)
        {
           return new Money(amount()+m.amount(),currency());
        }
        public boolean equals(Object anObject)
        {
           if(anObject instanceof Money)
           {
               Money aMoney=(Money)anObject;
               return aMoney.currency().equals(currency())
                   && amount()==aMoney.amount();
           }
        return false;
        }
    }

        該類有兩個私有屬性fAmount和fCurrency,構造函數在對類進行初始化的時候,對兩個私有屬性進行了賦值。Add方法對兩個Money對象的 現金(fAmount)進行相加,equals方法對兩個Money對象的現金及貨幣單位進行比較是否相等。

     4 創建單元測試

        在項目窗口中的類Money.class上鼠標右鍵單擊,在彈出的菜單中選擇“工具”,並在子菜單中選擇“創建Junit測試”,如下圖所示:

            
發佈了44 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章