文章詳情頁
java - 單元測試對dao層的測試有什么好的實踐方案?
瀏覽:138日期:2023-12-23 18:47:53
問題描述
比如對某個新增的dao進行單元測試,那豈不是要真的往數(shù)據(jù)庫中插入一條數(shù)據(jù)?每次單元測試都新增一條數(shù)據(jù)?
還有,查詢操作,返回一個List的對象集合,怎么判斷數(shù)據(jù)是準確的呢?
對于單元測試,大家有什么好的實踐方案嗎?
問題解答
回答1:單元測試中使用數(shù)據(jù)庫,可以考慮兩種方案:
搭建一個長期使用的測試數(shù)據(jù)庫,作為單元測試,測試開始前或完成后清空無關數(shù)據(jù),即可保證測試的可重復性。缺點是多個人同時運行單元測試時,可能會失敗。
使用內存數(shù)據(jù)庫(如 H2)。優(yōu)點是無需清空無關數(shù)據(jù),缺點是要將數(shù)據(jù)庫初始化過程(如建表語句)納入單元測試中。如果初始化很復雜,也會影響單元測試的效率。
至于如何驗證查詢結果,基本上根據(jù)業(yè)務邏輯來。比如我單元測試運行到這里,查詢這個一定會返回 27 條記錄,那就驗證返回記錄數(shù)是否為 27。其他情況可以自己設計。
標簽:
java
相關文章:
1. list - python 求助2. linux - Ubuntu下編譯Vim8(+python)無數(shù)次編譯失敗3. python - TypeError: tryMsgcode() takes exactly 2 arguments (0 given)4. javascript - react,獲取radio的值出錯5. css - 移動端 line-height安卓錯位,蘋果機正常用,縮放解決了,可是又出來了占位的問題6. extra沒有加載出來7. javascript - 彈出一個子窗口,操作之后關閉,主窗口會得到相應的響應,例如網(wǎng)站的某些登錄界面,django后臺的管理等,這是怎么實現(xiàn)的呢?8. 環(huán)境搭建 - anaconda 創(chuàng)建python2.7環(huán)境中打開編譯器確是3.6版本9. mysql replace 死鎖10. 求救一下,用新版的phpstudy,數(shù)據(jù)庫過段時間會消失是什么情況?
排行榜

熱門標簽