javaboys

          JUnit入門 [程序開發(fā)Java]

          JUnit入門 [程序開發(fā)Java]

          JUnit入門 [程序開發(fā)Java]
          2007-03-31 01:10:21
           一、簡介

            JUnit是一個開源的java單元測試框架。在1997年,由 Erich Gamma 和 Kent Beck 開發(fā)完成。這兩個牛人中 Erich Gamma 是 GOF 之一;Kent Beck 則在 XP 中有重要的貢獻(你覺得眼熟一點都不奇怪)。
            正如常言道:“麻雀雖小,五臟俱全。” JUnit設計的非常小巧,但是功能卻非常強大。
            下面是JUnit一些特性的總結:
            1) 提供的API可以讓你寫出測試結果明確的可重用單元測試用例
            2) 提供了三種方式來顯示你的測試結果,而且還可以擴展
            3) 提供了單元測試用例成批運行的功能
            4) 超輕量級而且使用簡單,沒有商業(yè)性的欺騙和無用的向?qū)?
            5) 整個框架設計良好,易擴展
            對不同性質(zhì)的被測對象,如Class,Jsp,Servlet,Ejb等,Junit有不同的使用技巧。由于本文的性質(zhì),以下僅以Class測試為例。

            二、下載

            點擊http://www.junit.org可以下載到最新版本的JUnit,本文使用的為3.8.1版。至于安裝或者配置之類,你只需要輕松的將下載下來的壓縮包中的jar文件,放到你工程的classpath中就可以了。
            這樣,你的系統(tǒng)中就可以使用JUnit編寫單元測試代碼了(是不是很簡單)!

            三、HelloWorld

            記得在幾乎每本語言教學書上都能找到HelloWorld這個入門代碼。今天在這里,我們也從一個簡單到根本不用單元測試的例子入手。這是一個只會做兩數(shù)加減的超級簡單的計算器(小學一年級必備極品)。代碼如下:

            public class SampleCalculator
            {
             public int add(int augend , int addend)
             {
             return augend + addend ;
             }

             public int subtration(int minuend , int subtrahend)

             {

             return minuend - subtrahend ;

             }

            }

            將上面的代碼編譯通過。下面就是我為上面程序?qū)懙囊粋€單元測試用例:

            //請注意這個程序里面類名和方法名的特征
            import junit.framework.TestCase;
            public class TestSample extends TestCase

            {

             public void testAdd()

             {

            SampleCalculator calculator = new SampleCalculator();

             int result = calculator.add(50 , 20);

             assertEquals(70 , result);

             }

             public void testSubtration()

             {

             SampleCalculator calculator = new SampleCalculator();

             int result = calculator.subtration(50 , 20);

             assertEquals(30 , result);

             }

            }

            好了,在DOS命令行里面輸入javac TestSample.java 將測試類編譯通過。然后再輸入 java junit.swingui.TestRunner TestSample 運行測試類,你會看到如下的窗口。

            綠色說明單元測試通過,沒有錯誤產(chǎn)生;如果是紅色的,則就是說測試失敗了。這樣一個簡單的單元測試就完成了.

            按照框架規(guī)定:編寫的所有測試類,必須繼承自junit.framework.TestCase類;里面的測試方法,命名應該以Test開頭,必須是public void 而且不能有參數(shù);而且為了測試查錯方便,盡量一個TestXXX方法對一個功能單一的方法進行測試;使用assertEquals等junit.framework.TestCase中的斷言方法來判斷測試結果正確與否。

            你可以對比著上面測試類中的實現(xiàn)來體會下規(guī)定——很簡單!而且你在這個測試類中有加入多少個測試方法,就會運行多少個測試方法。

            四、向前一步

            學完了HelloWorld,你已經(jīng)可以編寫標準的單元測試用例了。但是還有一些細節(jié),這里還要說明一下。不要急,很快的!
            另外你是否注意到,上面彈出窗口的一個細節(jié),在綠條下面有Errors、Failures統(tǒng)計。這兩者有何區(qū)別呢?
            Failures作為單元測試所期望發(fā)生的錯誤,它預示你的代碼有bug,不過也可能是你的單元測試代碼有邏輯錯誤(注意是邏輯錯誤)。Errors不是你所期待的,發(fā)生了Error你可以按照下面的順序來檢查:

            檢查測試所需的環(huán)境,如:數(shù)據(jù)庫連接

            檢查單元測試代碼

            檢查你的系統(tǒng)代碼

            五、成批運行test case

            這是前面提到的JUnit特性之一。它方便于系統(tǒng)單元測試的成批運行。使用起來也是非常簡單,先看下使用代碼:

            import junit.framework.Test;

            import junit.framework.TestSuite;

            public class TestAll{

             public static Test suite(){

             TestSuite suite = new TestSuite("TestSuite Test");

             suite.addTestSuite( TestSample.class);

             return suite;

             }

            }

            這個測試程序的編譯、運行,和上面TestSample的方式是一樣的。

            javac TestAll.java

            java junit.swingui.TestRunner TestAll

            怎么樣?這樣你在suite方法里面添加幾個TestCase就會運行幾個,而且它也可以添加TestSuite來將小一點的集合加入大的集合中來,方便了對于不斷增加的TestCase的管理和維護。

            你覺得suite方法的作用是不是于java應用程序的main很類似?并且這里的suite必須嚴格遵守上面的寫法!



          posted on 2007-04-01 16:40 javaboys 閱讀(99) 評論(0)  編輯  收藏 所屬分類: JUnit


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 久治县| 诏安县| 治多县| 康马县| 陆丰市| 辽阳市| 彭山县| 延长县| 阿拉善左旗| 海南省| 澄江县| 张掖市| 阿鲁科尔沁旗| 十堰市| 上林县| 巍山| 汉中市| 疏勒县| 简阳市| 龙游县| 广元市| 西乌珠穆沁旗| 张家口市| 丹东市| 墨玉县| 石门县| 阿拉善左旗| 察哈| 博白县| 威宁| 南丹县| 靖江市| 清水县| 嘉兴市| 信宜市| 娱乐| 洞头县| 栖霞市| 廉江市| 开江县| 盐津县|