<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    離弦之Ray

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks

    ???? 閑逛東大浦口圖書館,看到《單元測試之道——java版》,早已聞此書之大名,借來一閱。

    ??????JUnit有多重要等等就不多說了,如果你想接觸它,Come on,書上有個簡單的例子。下面是一個被測試的例子:

    public class Largest {
    ???? public static int largest(int[] list)
    ??? {
    ????????? int index, max = Integer.MAX_VALUE;
    ??????????for(index=0;index<list.length-1;index++){
    ????????? if(list[index]>max)max=list[index];
    ????????? }
    ???????? return max;
    ??????? ?}
    }
    這是一段有錯誤的程序,明眼人應(yīng)該能看出來,以它來說明JUnit的用法。
    我使用的Eclipse 3.1 ,JDK是1.4.2版本的。

    在此工程里新建一個JUnit Test Case(JUnit在整個工程中所占的位置在后面有說暫時就隨意了,可以放在被測程序同一個package內(nèi),也可以重新新建一個package)

    剛生成的Test Case是如下這樣的
    package com.test.ray;

    import junit.framework.TestCase;

    public class TestLargest extends TestCase {
    }
    標(biāo)記紅色是因為這是一個test case 一定要繼承的,而上面引用進來的junit.framework.TestCase包含了一個TestCase的具體框架。

    跟普通的類一樣,它需要一個構(gòu)造函數(shù)。
    public TestLargest(String name)
    ?{
    ??super(name);
    ?}
    其中的name到底是什么,下一篇再講。
    接下來就可以寫測試函數(shù)了,如果你想讓自己寫的測試函數(shù)自動被編譯器運行的話,請務(wù)必以test作為方法名的開頭。
    public void testSimple()
    ?{
    ??assertEquals(9,Largest.largest(new int[]{7,8,9}));
    ??assertEquals(-7,Largest.largest(new int[]{-8,-7,-9}));
    ?}

    測試方法體一般是有斷言組成的(關(guān)于斷言的內(nèi)容,以后再講),第一個斷言主要是測試邊界的,可以看到9位于數(shù)組的最后,運行后可以在Eclipse里面看到一個紅條,會有相關(guān)的錯誤信息。
    junit.framework.AssertionFailedError: expected:<9> but was:<2147483647>
    ?從此你可以分析到,程序中循環(huán)語句判斷條件應(yīng)該是index<list.length,哈哈,一個錯誤找到了。

    可是改過之后還是有錯
    仔細(xì)看看……
    God,max的初始化!!!
    可能很多人會想當(dāng)然地把它改成max=0;
    讓我們看看接下來會發(fā)生什么。
    junit.framework.AssertionFailedError: expected:<-7> but was:<0>
    知道為什么了嗎?如果數(shù)組里面有負(fù)數(shù),得到的結(jié)果當(dāng)然是0了。
    應(yīng)該是這樣max=Integer.MIN_VALUE;
    測試順利通過!

    其實這個程序還是有漏洞的,就是如果傳入的數(shù)組是一個空數(shù)組的情況,可以這樣改寫
    public class Largest {
    ?public static int largest(int[] list)
    ?{
    ??int index, max = Integer.MIN_VALUE;
    ??if(list.length==0){throw new RuntimeException("Empty list");}
    ??for(index=0;index<list.length;index++)
    ??{
    ???if(list[index]>max)max=list[index];
    ??}
    ??return max;
    ?}
    }

    對應(yīng)的Test Case也改變一下
    public class TestLargest extends TestCase {
    ?public TestLargest(String name)
    ?{
    ??super(name);
    ?}
    ?public void testSimple()
    ?{
    ??assertEquals(9,Largest.largest(new int[]{7,8,9}));
    ??assertEquals(-7,Largest.largest(new int[]{-8,-7,-9}));
    ?}
    ?public void testEmpty()
    ?{
    ??try{
    ???Largest.largest(new int[]{});
    ???fail("lallal");
    ???}catch(RuntimeException e){System.out.println("cuo la!");}
    ?}
    }
    增加了一個測試數(shù)組為空的測試方法,從Test Case下面的Console中可以知道Test Case 已經(jīng)捕獲了這個異常。

    好了,今天就寫到這里,下次有更精彩的內(nèi)容哦。

    ?

    posted on 2006-06-11 00:26 離弦之ray的技術(shù)天空 閱讀(363) 評論(0)  編輯  收藏 所屬分類: JUnit

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲春色在线视频| 亚洲成av人片一区二区三区| 久久亚洲国产精品| 久久久久国产精品免费免费不卡 | 国产一区在线观看免费| 亚洲日本一线产区和二线产区对比| 免费毛片a在线观看67194| 亚洲AV无码乱码在线观看代蜜桃| 国产成人无码免费看视频软件| va天堂va亚洲va影视中文字幕| 24小时免费直播在线观看| 亚洲熟妇av午夜无码不卡| 国产片免费在线观看| 又长又大又粗又硬3p免费视频| 亚洲欧洲中文日韩久久AV乱码| jizz在线免费观看| 亚洲av色影在线| 成人免费黄色网址| 精品国产_亚洲人成在线| 亚洲精品岛国片在线观看| 91视频精品全国免费观看| 亚洲黄色在线网站| 最新69国产成人精品免费视频动漫| 美女又黄又免费的视频| 亚洲精品国产美女久久久| 久草视频免费在线观看| 男人的天堂av亚洲一区2区| 亚洲一区无码精品色| 最近免费字幕中文大全视频| 亚洲综合精品伊人久久| 久久影视综合亚洲| 国产精品久久永久免费| 日韩a毛片免费观看| 亚洲高清在线mv| 在线观看国产情趣免费视频| 三级黄色在线免费观看| 亚洲欧洲日韩国产一区二区三区| 亚洲国产高清在线一区二区三区 | 国产A在亚洲线播放| 扒开双腿猛进入爽爽免费视频| 国产福利在线观看永久免费|