ServiceA不應該直接調用ServiceB派生的Dao方法

ServiceA不應該直接調用ServiceB派生的Dao方法

背景

     服務層單元測試是指針對應用程序中服務層代碼的測試。服務層通常包含業務邏輯和數據處理代碼,因此服務層單元測試的目標是驗證這些代碼的正確性和可靠性。通過編寫針對服務層方法的測試用例,並模擬服務層的依賴項,我們可以在隔離環境中對服務層代碼進行測試,以確保它的功能符合預期。這種測試方法有助於提高整個應用程序的代碼質量和穩定性。

我們在ServiceA中直接調用ServiceB.lambdaQuery()進行數據DAO訪問

MybatisPlus的官方 “鏈式調用 lambda 式”

我們在單元測試中,似乎已經不容易做mock, 因爲我們原本用意應mock對應依賴的service方法。

原則

  • 本質是從業務方法角度每個業務常見 需要自己的方法,而不是直接依賴其他Service持久層方法。假設後續切換其他持久層框架則難以擴展。也可測試性。

  • 順理清楚上下文測試ServiceA, Mock serviceB

缺點:

  1. 強依賴mybatisPlus, 基類方法mock關係負載

解決方案:

  1. 定義ServiceB的業務邏輯方法後,在其中方法調用 ,則可以隔離。
    tapd_41106815_1697608580_821

  2. 在ServiceA中引用DaoB的數據訪問對象。

Summary

1. 在應用程序中,服務層起着至關重要的作用,因此編寫針對服務層的單元和集成測試非常重要。在測試服務層組件時,需要考慮不同的測試類型和策略。使用適當的測試技術,可以確保服務層的代碼質量,提高應用程序的整體穩定性和可靠性。

2. 單元測試用於測試單個組件或方法的功能。這些測試通常獨立運行,不依賴於其他組件或服務。在Spring Boot中,可以使用JUnit和Mockito等框架編寫單元測試。
集成測試則用於測試多個組件或服務之間的交互。這些測試驗證整個系統的工作流程,而不僅僅是單個組件。在Spring Boot中,可以使用Spring Boot Test和Spring Integration Test等框架編寫集成測試。
爲了確保微服務的可靠性和穩定性,編寫全面的單元和集成測試套件至關重要。這些測試可以幫助開發人員及早發現問題,並確保應用程序在實際環境中按預期工作。

3. Apache Commons LangApache Commons Lang是一個Java庫,提供了許多幫助處理核心Java類的實用方法。這個項目的單元測試非常全面,可以作爲單元測試的最佳實踐示例。



今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 項目管理, 產品管管,團隊建設 有參考作用 , 您可能感興趣的文章:
領導人怎樣帶領好團隊
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
視頻直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續集成/CD
互聯網電商購物車架構演變案例
互聯網業務場景下消息隊列架構
互聯網高效研發團隊管理演進之一
消息系統架構設計演進
互聯網電商搜索架構演化之一
企業信息化與軟件工程的迷思
企業項目化管理介紹
軟件項目成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
項目管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
互聯網數據庫架構設計思路
IT基礎架構規劃方案一(網絡系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之性能實時度量系統演變

如有想了解更多軟件設計與架構, 系統IT,企業信息化, 團隊管理 資訊,請關注我的微信訂閱號:

MegadotnetMicroMsg_thumb1_thumb1_thu[2]

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 該文章也同時發佈在我的獨立博客中-Petter Liu Blog。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章