不依賴第三方環境和服務

2022-08-27 16:54:12 字數 932 閱讀 6262

一切依賴於第三方環境和服務的測試都不能叫做單元測試

單元測試的粒度

單元測試的是圍繞著乙個單點的功能來展開的,如果加入其他依賴因素,就會對單元測試的結果造成干擾,所以單元測試一定要把依賴因素給排除掉。

如何消除依賴

元件本地化實現

這種情況常見於資料庫和中介軟體的依賴。比如dao層單元測試,要驗證mysql的sql語句的執**況,那就不能直接使用測試環境的資料庫來作為單測的基礎設施,畢竟測試環境容易有垃圾資料、環境不穩定等情況會影響測試的結果。這時候就要借助一些本地的資料庫實現,比如h2記憶體資料庫,支援標準 sql, jdbc api,效能優良的資料庫引擎,這樣在測試中引入h2就可以消除對測試環境的依賴,而且測試用例的執行速度更快。

其他比如mongodb、kafka、mq等的單元測試與之類似,都是要採用本地化的實現。

模擬依賴服務

就是利用一些mock框架,模擬服務的行為和資料,單測的粒度決定我們只關心某一點,至於依賴的服務如何,要在整合測試裡去測,故mock依賴的情況下預設所依賴的服務都是沒有問題的,只關心被測試**的邏輯。

mock其實就是建立乙個模擬的物件,來代替真實的物件,這樣我們就可以指定mock物件的行為,比如返回什麼樣的資料,執行什麼樣的動作,也可以驗證mock對應的某個方法有沒有呼叫、呼叫了多少次等。

dao層單元測試依賴消除

dao層無外乎就是增刪改查,既要驗證操作能否正常執行,也要驗證資料是否符合預期,所以這一層的測試不能使用mock,否則無法達到單測的目的,沒有意義。dao層的測試依賴要採用元件本地化的形式實現,比如用h2記憶體資料庫來代替實際上測試環境中的mysql。

service層單元測試依賴消除

service層的依賴適宜使用mock框架,來模擬所依賴服務的行為和資料。比如某個服務依賴於使用者中心的使用者資訊介面,那我們就可以模擬該介面的返回資料來驗證不同場景的邏輯。

c4r 永久 不依賴第三方的移動適配

c4r convert for responsive 故名思議就是轉化為響應式的意思。雲牧切圖pc火狐截圖 雲牧pc切圖移動適配後截圖 簡潔扼要的html 結構 簡潔的html 結構,不少些乙個 也不多寫乙個 命名簡潔易懂,html結構縮排讓 更容易閱讀。切圖網獨有的css重寫 切圖網延續8年的cs...

如何測試依賴第三方服務的功能

概要 在電商網際網路中,經常會遇到呼叫第三方服務的功能,比如金融支付 日誌拉取 資料分析等服務。比如接入支付寶支付,支付寶的沙盒環境和線上一樣健全,很難出現api文件中的大部分錯誤碼,很難進行測試。方案設計 根據第三方服務的api文件,mock一套api介面,用於測試環境進行測試。介面的respon...

Spark SQL 新增第三方依賴包

最近在使用spark sql 執行hive語句時碰到異常資訊如下 開始以為時hive環境有問題,把sql語句拿到hive環境單獨跑沒有問題,排除掉這項。若有問題,參考解決方案。使用spark submit jar 提交掉時候已經引入了json serde 1.3 jar with dependenc...