編譯器檢查語法,測試應該檢查架構
大多數團隊把架構規則寫在 wiki 裡。這裡教你怎麼把它們變成可執行的測試,當依賴圖偏離設計時就讓 CI 失敗。
你的測試套件會驗證 在給定正確輸入時回傳 42。但它不會驗證 是否被允許 import 。編譯器對兩者都接受。你的單元測試對兩者也接受。但其中之一是架構違規,六個月後會讓你花上一整週重構。 這就是盲點。我們為邏輯寫測試,卻假設結構會自動維持。它不會。…
2 posts
大多數團隊把架構規則寫在 wiki 裡。這裡教你怎麼把它們變成可執行的測試,當依賴圖偏離設計時就讓 CI 失敗。
你的測試套件會驗證 在給定正確輸入時回傳 42。但它不會驗證 是否被允許 import 。編譯器對兩者都接受。你的單元測試對兩者也接受。但其中之一是架構違規,六個月後會讓你花上一整週重構。 這就是盲點。我們為邏輯寫測試,卻假設結構會自動維持。它不會。…
Clean architecture 的圖在白板上畫起來很漂亮。這裡教你怎麼讓 build pipeline 自動執行 dependency direction,確保 domain code 絕對碰不到 infrastructure。
團隊裡有人剛剛在 裡引用了 。PR 可以編譯過。測試全綠。Code review 有三百行,沒人發現。 三個月後,你想把 domain logic 抽成 shared package。你抽不出來。它依賴 Postgres 的型別、connection pooling 邏輯,還有一個只在 monolith 裡存在的…