メインコンテンツへスキップ
このクックブックでは、Droidがコードを変更した際に自動的にテストを実行し、テストカバレッジを維持し、テスト要件を強制する方法を説明します。

仕組み

テストフックでは以下のことができます:
  1. テストの自動実行: コード変更後にテストを実行
  2. カバレッジの追跡: カバレッジの閾値を監視・強制
  3. テストファイルの検証: 新しいコードに対応するテストの存在を確認
  4. 特定テストの実行: 関連するテストスイートのみを実行
  5. レポートの生成: テストとカバレッジのレポートを作成

前提条件

あなたのスタック用のテストフレームワークをインストールしてください:

基本的なテスト自動化

コード変更後のテスト実行

Droidがファイルを編集した際に自動的にテストを実行します。 .factory/hooks/run-tests.shを作成:
.factory/hooks.jsonに追加:

テストカバレッジの強制

テストカバレッジを低下させる変更をブロックします。 .factory/hooks/check-coverage.shを作成:
カバレッジ閾値を設定:

新しいファイルに対するテストの必須化

新しいコードファイルに対応するテストの存在を確認します。 .factory/hooks/require-tests.shを作成:

高度なテスト自動化

スマートテスト選択

変更の影響を受けるテストのみを実行します。 .factory/hooks/run-affected-tests.shを作成:

スナップショットテストの検証

スナップショットの更新を検出・検証します。 .factory/hooks/validate-snapshots.shを作成:

テストパフォーマンスの監視

テストの実行時間を追跡し、遅いテストに対して警告を出します。 .factory/hooks/monitor-test-perf.pyを作成:

テストの不安定性検出器

不安定なテストを検出・報告します: .factory/hooks/detect-flaky-tests.shを作成:

ベストプラクティス

1

可能な場合はテストを非同期実行

Droidを不要にブロックしないようにします:
2

適切なタイムアウトを設定

テストスイートに十分な時間を確保します:
3

テストファイル規約を使用

標準の命名パターンに従います:
4

カバレッジを設定可能にする

ファイルごとに異なるしきい値が必要な場合があります:
5

テスト結果をキャッシュする

コードが変更されていない場合はテストをスキップします:

トラブルシューティング

問題: テスト実行がワークフローをブロックする 解決策: ユニットテストのみを実行し、統合テストをスキップ:
問題: フック内でテストが失敗するが、手動実行では成功する 解決策: 環境の違いを確認:
問題: カバレッジに生成ファイルが含まれる 解決策: カバレッジの除外設定を構成:

関連項目