基于消費者驅動契約測試

在微服務架構下,不同服務由不一樣的團隊開發(fā)和維護。如果個別服務由某些原因升級后需要調整接口,還沒有改造完成,影響到服務消費方正常使用接口。

Ian Robinson提出Consumer-Driver Contracts,消費者驅動契約,簡稱CDC。能解決上述所描述的問題,這里契約是指服務消費者和服務提供者約定,消費者消費契約,提供者提供契約。

在沒有加入契約時,微服務集成測試調用流程如圖1,如果服務提供者返回響應內容發(fā)生改變,消費者無法正常集成測試了。

圖1

加入契約,微服務集成測試流程如圖2,在開發(fā)過程中,消費者無須等到服務提供者開發(fā)完成,就能利用契約能進行預集成測試,同時,能降到聯(lián)調接口成本。


圖2

上述主要說明加入契約的好處,我們要做到知其然知其所以然,看看下面消費者驅動契約的流程圖:


圖3

下面給大家解讀流程圖。

consumer使用producer發(fā)布stubs.jar進行接口測試,也就是說consumer接收到響應內容是stub.jar返回。在consumer服務要加入pring-cloud-starter-stub-runner依賴包,目的為了能夠調用stubs.jar包含的契約。

producer需要生成stubs.jar,提供consumer使用。通過contract maven插件生成stub jar包,然后install到本地。在生成之前需要配置groovy文件,groovy文件主要包括請求信息和響應內容, groovy文件可以理解為契約內容。在producer服務要加入spring-cloud-starter-contract-verifier,為了驗證是否符合契約。

搭建消費者驅動契約需要用到:

  • Java8
  • Spring Boot (2.04.RELEASE)
  • Spring Cloud Contract (2.0.1.RELEASE)
  • Maven
    暫時不詳細說整個開發(fā)流程,日后會把開發(fā)流程寫完。大家下載在github上下載CDC例子進行解讀和運行。

參考資料:Consumer-Driven Contract Testing with Spring Cloud Contract

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容