Kotlin和SpringBoot開發的六邊形架構應用案例


TalkAdvisor是一個使用Kotlin和SpringBoot開發的六邊形體系結構演示應用程序。

Kotlin和SpringBoot開發的六邊形架構應用案例

TalkAdvisor由4個不一樣的模塊組成:架構

1. 六邊形內部talkadvisor-domainapp

此模塊保存應用程序的全部業務價值,您能夠在其中找到其DDD聚合Recommendation.。 已配置Maven以防止向領域中導入任何外部工件:dom

Kotlin和SpringBoot開發的六邊形架構應用案例

若是向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客戶端。

這種(反)模式的主要缺點是測試問題的混合。經過這種類型的測試,咱們有責任驗證:

  • 應用程序的業務邏輯(功能測試)
  • 外部API的合同(合同測試)
  • 提供給消費者的工做流程 - 或相似的東西(端到端測試)
  • 領域對象和適配器之間的映射(單元測試/集成測試)
  • 應用程序的不一樣子組件的集成,例如控制器,領域服務,存儲庫...... (集成測試/組件測試)
  • 大部分時間都不知道它:活動文檔(合同測試)
相關文章
相關標籤/搜索