TalkAdvisor由4個不一樣的模塊組成:架構
1. 六邊形內部talkadvisor-domainapp
此模塊保存應用程序的全部業務價值,您能夠在其中找到其DDD聚合Recommendation.。 已配置Maven以防止向領域中導入任何外部工件:dom
若是向pom添加了任何依賴項,若是此列表中不容許,則構建將失敗。單元測試
2. 六邊形的外面talkadvisor-infra測試
全部適配器都收集在talkadvisor-infra模塊中。talkadvisor-infra是一個父pom,集中了全部適配器的常見配置(Spring Boot BOM,...)。基礎設施分爲3個模塊:設計
(1)talkadvisor-infra-applicationcdn
整個應用程序駐留在此模塊中。您能夠在此處找到控制器,YouTube客戶端(SPI適配器),REST資源(API適配器)和Spring Boot應用程序。對象
(2)talkadvisor-infra-external-stubsblog
保存外部服務的存根,基本上是wiremock-based基礎設施,其中存儲了咱們向YouTube發出的請求的一些響應有效負載。這些存根是在集成驗收測試期間啓動的,以便徹底隔離TalkAdvisor的CICD構建。它們也可用於運行應用程序,請參閱運行應用程序。資源
(3)talkadvisor-infra-acceptance-tests
集成驗收和應用程序的端到端測試。它們在每一個構建中針對具備外部存根的TalkAdvisor的本地實例啓動。端到端測試也能夠針對插入真實調用的YouTube部署實例啓動,請參閱啓動端到端測試。
使用Cucumber(領域驅動測試)在領域驅動設計和六邊形體系結構中實現功能測試
使用領域驅動設計和六邊形體系結構,一般意味着應用行爲驅動開發方法。
不少人都理解它,這種技術如今很廣泛。不幸的是,咱們常常看到用於描述應用程序行爲的功能測試被實現爲測試REST端點的http客戶端。
這種(反)模式的主要缺點是測試問題的混合。經過這種類型的測試,咱們有責任驗證: