關(guān)于單元測(cè)試
題記:新同學(xué)分享了“測(cè)試驅(qū)動(dòng)”,第一次感覺(jué)測(cè)試驅(qū)動(dòng)離自己那么近。因此開(kāi)始嘗試。記下自己的一小點(diǎn)想法。
1.一切從測(cè)試開(kāi)始
不管在寫(xiě)復(fù)雜的代碼,還是簡(jiǎn)單的代碼,一切從測(cè)試開(kāi)始。練習(xí)成自己編碼的習(xí)慣。
自己的做法只能算是“偽測(cè)試驅(qū)動(dòng)”,因?yàn)檫€是有詳細(xì)的設(shè)計(jì),但遵循此做法,對(duì)于需求的變更、代碼存在的bug,導(dǎo)致編碼修改的時(shí)候,心里是踏實(shí)的。
目前自己還不能感覺(jué)到對(duì)后期的維護(hù)會(huì)帶來(lái)什么樣的結(jié)果?
推薦《測(cè)試驅(qū)動(dòng)開(kāi)始》。
2.工具
junit、mockito、emma
junit,這是大家熟知的,學(xué)到新點(diǎn):a。參數(shù)化測(cè)試 b。private方法測(cè)試(反射) c。runwith & Unite,組織測(cè)試單元
mockito,輕量的mock工具。測(cè)試中很麻煩的一個(gè)問(wèn)題是:環(huán)境依賴,比如:web中依賴容器生成request對(duì)象。mockito很好的解決大部分問(wèn)題(static類與private方法未能解決)。
emma,代碼覆蓋率檢查工具,eclipse插件。效果:紅色=未測(cè)試;黃色=測(cè)試不完整,只是部分邏輯;綠色=測(cè)試完整。(注意:不能絕對(duì)的追求覆蓋率,一定要記住2/8原則,將主要的精力關(guān)注主要的邏輯)。
3.習(xí)慣
a。代碼結(jié)構(gòu),3部分:prepare(包含mock)準(zhǔn)備數(shù)據(jù)、action執(zhí)行、assert驗(yàn)證
b。方法命名:被測(cè)試方法名$測(cè)試目的,如:run$ParameterIsNull
c。測(cè)試A類,有兩個(gè)方法run()和prepare(),run方法調(diào)用prepare,且prepare執(zhí)行非常耗時(shí)間。想要單獨(dú)測(cè)試run()方法 ?
答案:B extends A,復(fù)寫(xiě)prepare方法(等于是mock prepare方法),單獨(dú)的測(cè)試run方法邏輯。
d。持續(xù)寫(xiě)測(cè)試代碼的習(xí)慣
1.一切從測(cè)試開(kāi)始
不管在寫(xiě)復(fù)雜的代碼,還是簡(jiǎn)單的代碼,一切從測(cè)試開(kāi)始。練習(xí)成自己編碼的習(xí)慣。
自己的做法只能算是“偽測(cè)試驅(qū)動(dòng)”,因?yàn)檫€是有詳細(xì)的設(shè)計(jì),但遵循此做法,對(duì)于需求的變更、代碼存在的bug,導(dǎo)致編碼修改的時(shí)候,心里是踏實(shí)的。
目前自己還不能感覺(jué)到對(duì)后期的維護(hù)會(huì)帶來(lái)什么樣的結(jié)果?
推薦《測(cè)試驅(qū)動(dòng)開(kāi)始》。
2.工具
junit、mockito、emma
junit,這是大家熟知的,學(xué)到新點(diǎn):a。參數(shù)化測(cè)試 b。private方法測(cè)試(反射) c。runwith & Unite,組織測(cè)試單元
mockito,輕量的mock工具。測(cè)試中很麻煩的一個(gè)問(wèn)題是:環(huán)境依賴,比如:web中依賴容器生成request對(duì)象。mockito很好的解決大部分問(wèn)題(static類與private方法未能解決)。
emma,代碼覆蓋率檢查工具,eclipse插件。效果:紅色=未測(cè)試;黃色=測(cè)試不完整,只是部分邏輯;綠色=測(cè)試完整。(注意:不能絕對(duì)的追求覆蓋率,一定要記住2/8原則,將主要的精力關(guān)注主要的邏輯)。
3.習(xí)慣
a。代碼結(jié)構(gòu),3部分:prepare(包含mock)準(zhǔn)備數(shù)據(jù)、action執(zhí)行、assert驗(yàn)證
b。方法命名:被測(cè)試方法名$測(cè)試目的,如:run$ParameterIsNull
c。測(cè)試A類,有兩個(gè)方法run()和prepare(),run方法調(diào)用prepare,且prepare執(zhí)行非常耗時(shí)間。想要單獨(dú)測(cè)試run()方法 ?
答案:B extends A,復(fù)寫(xiě)prepare方法(等于是mock prepare方法),單獨(dú)的測(cè)試run方法邏輯。
d。持續(xù)寫(xiě)測(cè)試代碼的習(xí)慣
posted on 2010-11-02 21:31 石建 | Fat Mind 閱讀(247) 評(píng)論(0) 編輯 收藏 所屬分類: 一點(diǎn)理解