一切依賴於第三方環境和服務的測試都不能叫做單元測試單元測試的粒度
單元測試的是圍繞著乙個單點的功能來展開的,如果加入其他依賴因素,就會對單元測試的結果造成干擾,所以單元測試一定要把依賴因素給排除掉。
如何消除依賴
元件本地化實現
這種情況常見於資料庫和中介軟體的依賴。比如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...