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

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

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

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

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

    TDD是這樣一種設(shè)計風格

    Maintain an exhaustive suite of Programmer Tests

    維護一套程序員測試的框架

    No code goes into production unless it has associated tests

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

    Write the tests first

    先寫測試

    Tests determine what code you need to write

    測試決定你需要寫什么代碼

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



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

    (eclipse的快速修復功能能幫你搞定哦??磥硐葘憸y試還是很方便的*^^*)

    讓計算機來告訴你

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

    下面看看代碼的演進

    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());
    }



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

    下面看看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;
    }



    實際上,每次變化之后都重新編譯和運行這個測試。

    Agile Modeling and TDD


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

    創(chuàng)建敏捷模型能夠幫助我們TDD工作,這是因為,他能揭示我們需要的測試。一個敏捷模型草圖的背后總是隱含著這樣的思考“我怎樣來測試他”,這將導致一個新的測試案例。

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

    主站蜘蛛池模板: 女bbbbxxxx另类亚洲| 亚洲av永久无码精品天堂久久| 亚洲av最新在线观看网址| 69天堂人成无码麻豆免费视频| 久久亚洲精品中文字幕| 亚欧免费视频一区二区三区 | 亚洲AV无码乱码在线观看| 国产福利电影一区二区三区,免费久久久久久久精 | 美女无遮挡拍拍拍免费视频| 亚洲电影免费在线观看| 亚洲AV无码一区二区三区DV| 成人性生交大片免费看好| 亚洲精品福利视频| 美女露100%胸无遮挡免费观看| 日韩一级免费视频| 亚洲av无码一区二区三区天堂古代| 中国人xxxxx69免费视频| 亚洲国产成人精品无码一区二区 | 女人张开腿等男人桶免费视频 | 亚洲Aⅴ无码一区二区二三区软件 亚洲AⅤ视频一区二区三区 | 亚洲无砖砖区免费| 无码国产精品久久一区免费| 亚洲欧美国产国产综合一区| 午夜亚洲av永久无码精品| 国产午夜精品久久久久免费视 | 亚洲精品在线网站| 热99re久久精品精品免费| 1区1区3区4区产品亚洲| 91香蕉视频免费| 美女裸免费观看网站| 亚洲精品乱码久久久久久按摩| 99热在线免费播放| 亚洲国产精品无码久久| 国产亚洲美女精品久久久| 巨波霸乳在线永久免费视频| 色五月五月丁香亚洲综合网| 亚洲人成网站在线播放vr| 黄色片在线免费观看 | 日韩午夜理论免费TV影院| 亚洲av日韩综合一区二区三区 | jizz免费在线影视观看网站|