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

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

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

    離弦之Ray

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks

    #

    要做軟工作業了,把以前的東西要翻出來了。

    本來想馬上配好myeclipse+jboss+mysql的,但不知道是什么原因老是說配置錯誤。網上也找到了類似的錯誤,但也沒有很好的解答。

    逼的我沒辦法,只好重裝jdk,終于行了,但要睡覺咯……因為后面還有考試。
    posted @ 2006-06-14 00:41 離弦之ray的技術天空 閱讀(235) | 評論 (0)編輯 收藏

    import junit.framework.*;
    public class TestSimple extends TestCase{
    ?? public TestSimple(String name){
    ????????? super(name);
    ???? }
    ?? public void testAdd(){
    ??????????? assertEquals(2,1+1);
    ???? }
    }
    這是最簡單的JUnit框架,你可以在一個測試方法里面加多個斷言,但只要一個斷言出問題了,下面的斷言就不執行咯。

    但是調用其它測試類甚至一個測試系統該怎么辦呢?
    其實每個測試類都包含了一個
    public static Test suite()方法,如果你沒顯式地實現它,系統會自動運行以test開頭的方法

    import junit.framework.*;
    public class TestSimple extends TestCase{
    ?? public TestSimple(String method){
    ????????? super(method);
    ???? }
    ?? public void testA(){
    ????????????……
    ???? }
    ?? public void testB(){
    ????????????……
    ???? }
    ?? public void testC(){
    ????????????……
    ???? }
    ?? //如果你只想運行A和B 那么要這樣寫
    ?? public static Test suite(){
    ??????? TestSuite suite = new TestSuite();
    ??????? suite.addTest(new TestSimple("testA"));
    ??????? suite.addTest(new TestSimple("testB"));
    ????????return suilte;
    ??? }
    }

    甚至有更高層的調用
    suite.addTestSuite(TestClassOne.class);
    suite.addTestSuite(TestClassTwo.suite());

    仔細觀察這兩句的調用方法和參數哦,應該不用多說什么了吧……
    posted @ 2006-06-12 18:48 離弦之ray的技術天空 閱讀(364) | 評論 (0)編輯 收藏

    這個博客有點像讀書筆記了,這樣也挺好的,看一遍書,再總結一下重要的內容。



    大家多多捧場啊
    posted @ 2006-06-12 00:51 離弦之ray的技術天空 閱讀(181) | 評論 (1)編輯 收藏

    ??????? 在上一篇中已經看到了assertEquals斷言,還有其它斷言嗎?它們的原型又是怎樣的呢?

    ??????? 首先是assertEquals
    ??????? 它的函數原型是assertEquals([String message],expected,actual)其中String message 是可選的。這樣就比較清楚啦,expected 是期望的值,而actual是事實上運行后得到的值。如果這兩個值吻合,那么這個測試就通過了,Eclipse里面會出現一個綠色的長條,看到它是心曠神怡啊。否則,長條就是紅色的,就要去改程序啦。

    ???????? 接下來介紹其它幾個斷言。
    ???????? assertNull([String message],java.lang.Object object?)?這是判斷對象是否為空
    ???????? 相對的
    ???????? 還有一個:
    ???????? assertNotNull([String message],java.lang.Object object)這是判斷對象是否不為空

    ???????? assertSame([String message],expected,actual)判斷expected 和actual引用的是否為同一個對象

    ???????? assertTrue([String message],boolean condition)判斷條件是否為true

    ???????? 當然還有assertFalse啦

    ????????? 另一個比較另類的函數是fail([String message])其中String message 是可選的。
    ????????? 這個斷言會讓測試立即失敗,主要用在某個不應該被到達的分支,比如在一個預期發生的異常之后。
    posted @ 2006-06-12 00:50 離弦之ray的技術天空 閱讀(478) | 評論 (0)編輯 收藏

    ???? 閑逛東大浦口圖書館,看到《單元測試之道——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;
    ??????? ?}
    }
    這是一段有錯誤的程序,明眼人應該能看出來,以它來說明JUnit的用法。
    我使用的Eclipse 3.1 ,JDK是1.4.2版本的。

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

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

    import junit.framework.TestCase;

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

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

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

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

    其實這個程序還是有漏洞的,就是如果傳入的數組是一個空數組的情況,可以這樣改寫
    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;
    ?}
    }

    對應的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!");}
    ?}
    }
    增加了一個測試數組為空的測試方法,從Test Case下面的Console中可以知道Test Case 已經捕獲了這個異常。

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

    ?

    posted @ 2006-06-11 00:26 離弦之ray的技術天空 閱讀(363) | 評論 (0)編輯 收藏

    僅列出標題
    共11頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 
    主站蜘蛛池模板: 亚洲国产精品一区第二页| 亚洲精品国产日韩| 免费无码精品黄AV电影| 亚洲爆乳精品无码一区二区| 77777亚洲午夜久久多人| 最近免费中文字幕大全免费| 相泽南亚洲一区二区在线播放| 亚洲成AV人片在线观看ww| 免费精品国产自产拍在| 一区二区在线视频免费观看| 亚洲一卡二卡三卡| 一本色道久久综合亚洲精品高清| 亚洲性线免费观看视频成熟| 一二三四在线观看免费中文在线观看| 久久久久亚洲AV成人片| 免费一级毛片不卡在线播放| 99re6热视频精品免费观看 | 51午夜精品免费视频| 亚洲成a人片在线观看播放| 免费在线不卡视频| 免费一本色道久久一区| 18禁在线无遮挡免费观看网站| 亚洲精品美女久久久久久久| 久久久久亚洲AV无码永不| 亚洲av手机在线观看| AV大片在线无码永久免费| 久久久久久久久久久免费精品| 狠狠色伊人亚洲综合网站色| 无码乱人伦一区二区亚洲一| 免费一级毛片不卡在线播放| 在线观看免费宅男视频| 3d成人免费动漫在线观看| 色www永久免费网站| 免费人成大片在线观看播放电影| 亚洲一级片在线观看| 亚洲AV无码一区东京热久久| 亚洲精品国产福利一二区| 永久免费看bbb| 一二三四在线观看免费高清中文在线观看| 中文字幕乱码免费看电影| 四虎永久在线精品免费一区二区|