テストガイド
Merlon は Go / Rust / TypeScript / Proto の各レイヤでテストを持つ。本文書は各テストの実行方法とテスト戦略の方針を示す。
コンポーネント別の実行
Go (API)
cd api && go test ./...
カバレッジ付き:
cd api && go test -cover ./...
Rust (Engine)
cd engine && cargo test
UI (TypeScript / React)
cd ui && npm run test
Proto (Protocol Buffers)
cd proto && buf lint
破壊的変更の検出:
cd proto && buf breaking --against '.git#branch=main'
全体実行
make test
make test は Go テスト・Rust テスト・UI テスト・buf lint をまとめて実行する。CI でも同じターゲットを使用する。
テスト戦略の方針(TDD)
機能実装・バグ修正は TDD(テスト駆動開発)で進める。
- テスト作成 — 期待する振る舞いを表すテストを先に書く(失敗を確認)
- 実装 — テストを通す最小限のコードを書く
- リファクタリング — テストが通る状態を保ちつつ整理する
レイヤ別の重点
- Engine(Rust) — CDD スコアリング・TM 評価・スクリーニングはビジネスロジックの核。判断根拠の再現性(Auditability First)を担保するため、同一入力に対する出力の決定性をテストで固定する
- API(Go) — CRUD とオーケストレーション。サービス境界の契約と、エラー時にアラート側へ倒れること(Fail-Alert)を検証する
- Proto — 契約安定性(Contract Stability、後方互換 12 ヶ月以上)を
buf breakingで機械的に保証する - UI — コンポーネント単位のテストと、調査ワークフローのユーザーフロー
既存パターンへの準拠
新規テストは各ディレクトリの既存テストフレームワーク・命名規則・パターンに従う。Go は標準 testing、Rust は #[cfg(test)] モジュール、UI は既存のテストランナー設定を踏襲する。