1. 程式人生 > >Kotlin和SpringBoot開發的六邊形架構應用案例

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

 

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

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

 

TalkAdvisor由4個不同的模組組成:

1. 六邊形內部talkadvisor-domain

此模組儲存應用程式的所有業務價值,您可以在其中找到其DDD聚合Recommendation.。 已配置Maven以防止向領域中匯入任何外部工件:

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

 

如果向pom添加了任何依賴項,如果此列表中不允許,則構建將失敗。

2. 六邊形的外面talkadvisor-infra

所有介面卡都收集​​在talkadvisor-infra模組中。talkadvisor-infra是一個父pom,集中了所有介面卡的常見配置(Spring Boot BOM,...)。基礎設施分為3個模組:

(1)talkadvisor-infra-application

整個應用程式駐留在此模組中。您可以在此處找到控制器,YouTube客戶端(SPI介面卡),REST資源(API介面卡)和Spring Boot應用程式。

(2)talkadvisor-infra-external-stubs

儲存外部服務的存根,基本上是wiremock-based基礎設施,其中儲存了我們向YouTube發出的請求的一些響應有效負載。這些存根是在整合驗收測試期間啟動的,以便完全隔離TalkAdvisor的CICD構建。它們也可用於執行應用程式,請參閱執行應用程式。

(3)talkadvisor-infra-acceptance-tests

整合驗收和應用程式的端到端測試。它們在每個構建中針對具有外部存根的TalkAdvisor的本地例項啟動。端到端測試也可以針對插入真實呼叫的YouTube部署例項啟動,請參閱啟動端到端測試。

使用Cucumber(領域驅動測試)在領域驅動設計和六邊形體系結構中實現功能測試

使用領域驅動設計和六邊形體系結構,通常意味著應用行為驅動開發方法。

很多人都理解它,這種技術現在很普遍。不幸的是,我們經常看到用於描述應用程式行為的功能測試被實現為測試REST端點的http客戶端。

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

  • 應用程式的業務邏輯(功能測試)
  • 外部API的合同(合同測試)
  • 提供給消費者的工作流程 - 或類似的東西(端到端測試)
  • 領域物件和介面卡之間的對映(單元測試/整合測試)
  • 應用程式的不同子元件的整合,例如控制器,領域服務,儲存庫...... (整合測試/元件測試)
  • 大部分時間都不知道它:活動文件(