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

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

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

    隨筆 - 3, 文章 - 152, 評(píng)論 - 17, 引用 - 0
    數(shù)據(jù)加載中……

    TDD(1)--轉(zhuǎn)自http://m.tkk7.com/yandazhi

    TDD是這樣一種設(shè)計(jì)風(fēng)格

    Maintain an exhaustive suite of Programmer Tests

    維護(hù)一套程序員測(cè)試的框架

    No code goes into production unless it has associated tests

    除非它已結(jié)合測(cè)試,產(chǎn)品不寫入任何代碼

    Write the tests first

    先寫測(cè)試

    Tests determine what code you need to write

    測(cè)試決定你需要寫什么代碼

    public void testEmptyList() {
        MovieList emptyList 
    =newMovieList();
        assertEquals(
    "Empty list should have size of 0"0, emptyList.size());
    }



    要通過(guò)上面的測(cè)試,你必須創(chuàng)建一個(gè)類MovieList,和一個(gè)方法size();

    (eclipse的快速修復(fù)功能能幫你搞定哦??磥?lái)先寫測(cè)試還是很方便的*^^*)

    讓計(jì)算機(jī)來(lái)告訴你

    你需要增加類或者方法,編譯器會(huì)告訴你。(eclipse會(huì)向你抱怨有cannot be resolved 的)

    下面看看代碼的演進(jìn)

    public void testRating() {
      assertEquals(
    "Bad average rating.",4,starWars.getAverageRating());
    }



    public void testRating() {
      starWars.addRating(
    3);
      starWars.addRating(
    5);
      assertEquals(
    "Bad average rating.",4,starWars.getAverageRating());
    }


    public void testRating() {
      Movie starWars 
    = new Movie("Star Wars");
      starWars.addRating(
    3);
      starWars.addRating(
    5);
      assertEquals(
    "Bad average rating.",4,starWars.getAverageRating());
    }



    非常有意思,和我們平時(shí)寫代碼的順序相反

    下面看看getAverageRating();

    public int getAverageRating() {
      
    return 4;
    }


    public int getAverageRating() {
      
    return (3 + 5/ 2;
    }



    private int totalRating = 0;


    public void addRating(int newRating) {
      totalRating 
    += newRating;
    }




    public int getAverageRating() {
      
    return totalRating / 2;
    }



    private int numberOfRatings = 0;

    public void addRating(int newRating) {
      totalRating 
    += newRating;
      numberOfRatings
    ++;
    }


    public int getAverageRating() {
      
    return totalRating / numberOfRatings;
    }



    實(shí)際上,每次變化之后都重新編譯和運(yùn)行這個(gè)測(cè)試。

    Agile Modeling and TDD


    采用XP(極限編程)的項(xiàng)目都采用了TDD的輔助手段。建模(modeling)是XP當(dāng)中很重要的的一個(gè)部分。XP開(kāi)發(fā)者使用用戶敘述(user stories) ,用戶敘述是清晰的敏捷模型。

    創(chuàng)建敏捷模型能夠幫助我們TDD工作,這是因?yàn)椋芙沂疚覀冃枰臏y(cè)試。一個(gè)敏捷模型草圖的背后總是隱含著這樣的思考“我怎樣來(lái)測(cè)試他”,這將導(dǎo)致一個(gè)新的測(cè)試案例。

    posted on 2005-07-25 12:26 閱讀(222) 評(píng)論(0)  編輯  收藏 所屬分類: Test-Driven Development

    主站蜘蛛池模板: 久久亚洲2019中文字幕| 亚洲午夜国产精品无卡| 99久久免费中文字幕精品| 亚洲三级电影网址| 性做久久久久久免费观看| 美女啪啪网站又黄又免费| 亚洲色偷拍另类无码专区| 日韩免费a级毛片无码a∨| 有码人妻在线免费看片| 亚洲精品视频在线免费| 国产免费卡一卡三卡乱码| 国产好大好硬好爽免费不卡| 亚洲精品一卡2卡3卡四卡乱码| 亚洲精品无码不卡在线播HE| 国产精品极品美女免费观看| 国内精品免费久久影院| 亚洲色图激情文学| 成人午夜亚洲精品无码网站| 野花高清在线观看免费完整版中文| 特a级免费高清黄色片| 亚洲日韩国产精品无码av| 亚洲精品第一国产综合境外资源 | 日韩中文字幕免费| 暖暖在线视频免费视频| 欧美亚洲精品一区二区| 亚洲第一页在线视频| 国产偷窥女洗浴在线观看亚洲| 男男AV纯肉无码免费播放无码| a毛片在线还看免费网站| 麻豆69堂免费视频| 国产精品高清视亚洲一区二区| 亚洲VA中文字幕无码毛片| 最新仑乱免费视频| 色猫咪免费人成网站在线观看| 老司机午夜性生免费福利| 99999久久久久久亚洲| 老汉色老汉首页a亚洲| 亚洲线精品一区二区三区| 国产成人涩涩涩视频在线观看免费| 欧洲乱码伦视频免费| 一级毛片免费不卡在线|