記錄點滴經(jīng)驗,匯聚知識汪洋
1、單元測試時對測試目標的明確。
最近對單元測試時明確測試目標有了新的想法,就是在對目標類進行測試時一定要明確目標類的作用究竟是什么。
比如說對于一個5層結(jié)構(gòu)的系統(tǒng)來說:數(shù)據(jù)庫,DAO,BL,control,JSP
其中數(shù)據(jù)庫和JSP的單元測試代價是比較高的,所以不考慮測試。
DAO的目標是從數(shù)據(jù)庫獲取數(shù)據(jù),所以可以使用內(nèi)存數(shù)據(jù)庫或者真實數(shù)據(jù)庫等方法直接進行測試,這點通常沒有爭議
BL層的目標是對業(yè)務(wù)邏輯的封裝,這個層的測試通常是比較有爭議的,要明確它僅僅是調(diào)用DAO并進行業(yè)務(wù)封裝,所以只需要對它以來的DAO進行模擬,然后測試是否正確封裝就可以了。
control層的目標是根據(jù)請求進行跳轉(zhuǎn),所以這個層的測試方法是,模擬請求對象和BL,然后檢查是否正確的調(diào)用BL以及正確的跳轉(zhuǎn)。
2、當不好倒轉(zhuǎn)依賴時進行依賴模擬的小技巧。
情景環(huán)境:我的BL層在對DAO層的依賴關(guān)系上沒有使用比較靈活的依賴反轉(zhuǎn)方法(這個是歷史原因^_^),這時候就對我在測試時對DAO的模擬上造成了一定的困擾。
解決辦法:但是所謂辦法總是能像出來的嗎,我把BL調(diào)用到DAO的地方封裝成一個統(tǒng)一的方法,然后在BL中定義一個Map,這個Map是可以從外部進行set的,然后在統(tǒng)一調(diào)用DAO的方法中判斷,如過map中有設(shè)置就獲取map的,如果map中沒有就獲取原來緊密耦合的DAO,這樣就可以在測試的時候從外部注入模擬的DAO了。
posted on 2008-03-05 12:11
rocket 閱讀(919)
評論(0) 編輯 收藏