之前寫了一篇關於對單元測試與整合測試的理解的文章,但過於泛泛。和朋友又討論了下,從另外乙個角度有了一點新的認識,記錄一下。
(假設spring專案,規範格式-阿里巴巴,用的領域設計,activity與user用id軟關聯),業務不一定合理,只是用作演示。
@service
public
class
userserviceimpl
//查詢活動
optionalactivityoption = activityrepository.getactivity(activityid);
//活動為空,拋自定義異常
activity activity = activityoption.orelsethrow(nullactivityexception::new);
//獲取參加的使用者id
listuserids = activity.getjoinuserids();
listuserlist = userrepository.getuserlistbyids(userids);
.mapaslist(userlist,userdo.class);
return users;
}}
針對以上**做單元測試的話,就是只測試該方法中所書寫的流程,其中的activityrepository.getactivity(activityid)與userrepository.getuserlistbyids(userids)都不算作是該單元本身的方法。
也就是說mock兩個假物件,讓activityrepository.getactivity(activityid)與userrepository.getuserlistbyids(userids)都返回固定的結果,確保queryuserofactivity方法呼叫的所有api都不會出錯,這樣錯誤只會出現在方法本身的**,這樣我覺得也可以稱之為單元測試。
如果能理解上面所說的單元測試,那麼整合測試其實也就很好理解了。逐個放開上面單元測試中mock的假物件,這樣就是多個方法整合到一起測試了。擴充套件一下,如果activityrepository和userrepository中也有其他類的api,那麼就有兩種整合測試的方法:
橫向:先逐個放開userservice中的activityrepository 和 userrepository ,然後放開activityrepository和userrepository中的其他類api
縱向:先放開actityrepository,在放開activityrepository中其他類的api,再放開userrepository中其他類的api。
對應的就是自頂而下和自底而上兩種測試方法。
實際專案中,這麼做會很耗時,一般會把一整條分支全部放開來測試。
單元測試和整合測試
單元測試 單元測試是在軟體開發過程中要進行的最低級別的測試活動,針對軟體設計的最小單元 模組。目標 單元測試與整合測試的區別 單元測試與系統測試的區別 單元測試環境 需要用到一些輔助模組來模擬與被測模組相聯絡的其他模組 驅動模組 相當於被測模組的主模組。樁模組 用於代替被測模組呼叫的子模組。單元測試...
關於單元測試的學習記錄
在開發過程中,單元測試必不可少,針對本人開發經驗 主要是整合spring mybatis等開發框架 歸納以下倆種單元測試,當作學習筆記和作為簡單總結,後期如有接觸新的方式,再進行修改。1 基於spring的單元測試 註解方式 runwith springjunit4classrunner.class...
關於單元測試提出的思考
對於開發者來說,軟體測試,特別是單元測試,也是在開發過程中的重要組成部分。對於負責的系統 功能模組來說,做好單元測試,對保證產品質量有非常重要的作用。此外,做好單元測試,還能提高開發者開發思維的嚴謹性 啟發功能模組解耦 測試驅動開發 以下提出單元測試常見的問題和提供使用的解決方案。待完善 有的時候做...