基于消費(fèi)者驅(qū)動契約測試

在微服務(wù)架構(gòu)下,不同服務(wù)由不一樣的團(tuán)隊(duì)開發(fā)和維護(hù)。如果個別服務(wù)由某些原因升級后需要調(diào)整接口,還沒有改造完成,影響到服務(wù)消費(fèi)方正常使用接口。

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

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

圖1

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


圖2

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


圖3

下面給大家解讀流程圖。

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

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

搭建消費(fèi)者驅(qū)動契約需要用到:

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

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

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容