工程開發
writing-go-tests
應用當前 Go 測試最佳實踐,包含並發測試、Mock 與表格驅動開發,以確保軟體開發的高穩定性。
簡介
此技能作為在 Go 代碼庫中實施高品質單元測試、整合測試與效能測試的全面指南。專為致力於透過嚴格遵循現代 Go 測試標準與習慣,以維持可靠、可維護且易於測試代碼的軟體工程師所設計。透過應用這些準則,開發人員能有效降低迴歸風險、改善覆蓋率指標,並確保系統在並發負載下正確運行。此技能提供了處理複雜相依性、提升執行速度以及管理測試夾具(fixtures)與清理任務的明確策略。
- 主要功能包含使用基於 map 的表格驅動測試架構,以獲得更佳的失敗輸出可讀性。
- 實作 Go 1.24+ 特性(如 testing/synctest)以進行確定性並發測試,消除不穩定的測試(flaky tests)。
- 關於 Mock 與測試替身(test doubles)的實用建議,優先考慮使用 Testcontainers 等真實相依性的整合測試,而非複雜的代碼生成 Mock。
- 關於覆蓋率目標的最佳實踐,主張 70-80% 的實用基準,而非僅追求絕對數值。
- 關於測試組織的特定指導,利用內部測試處理未導出邏輯,外部封裝處理 API 整合測試。
- 資源清理技術,優先使用 t.Cleanup() 而非傳統的 defer 陳述式,以實現更乾淨的測試生命週期管理。
使用此技能時,AI 將建議使用 google/go-cmp 進行深層相等檢查,並在標準庫不足時引入 testify 進行豐富的斷言。它協助透過建議 B.Loop() 模式與 benchstat 統計驗證來優化基準測試套件。使用者應注意此技能強調「行為驅動測試」而非實作細節,並專注於務實的卓越品質。此技能主要用於代碼重構、新功能開發,或診斷測試套件效能問題時。它能協助識別複雜情境(如 golden file 測試或特定環境配置)的最佳實作路徑,而不依賴僵化的 build tags。
倉庫統計
- Star 數
- 2
- Fork 數
- 0
- Open Issue 數
- 0
- 主要語言
- Go
- 預設分支
- main
- 同步狀態
- 閒置
- 最近同步時間
- 2026年5月3日 下午05:55