| name | test-targeted |
| description | テスト実行時の絞り込み運用ルール。プロジェクト全体テストではなく修正範囲に絞ったテスト実行を行う。 `gradlew test`/`pytest`/`jest`/`go test`等のテストランナーを実行するとき、テスト実行コマンドを 組み立てるときに必ず参照する。コミット差分や修正ファイルから対象テストを特定する手順を含む。
|
テスト絞り込み実行ルール
特別な指示がない限り、プロジェクト全体テストの一括実行は行わない。直前の作業内容・最新コミット差分・修正ファイルのパスから影響範囲を特定し、対象テストクラスのみに絞って実行する。
実行手順
git log / git diff で修正対象のクラス/パッケージを特定する
- テストランナーの絞り込みオプションで対象を限定する
- Gradle:
--tests "*ClassNameTest" または --tests "FQCN"
- pytest:
pytest path/to/test_file.py::TestClass::test_func または -k "expr"
- jest:
jest path/to/file.test.ts または -t "test name pattern"
- go test:
go test ./pkg/... -run TestName
- cargo test:
cargo test --test integration_test test_name
- 修正がドメイン層ならドメイン層のテストのみ、インフラ層ならインフラ層のテストのみ実行する
例外
以下の場合のみ全範囲テストを実行する:
- ユーザーから「全範囲を走らせて」「全部のテストを通して」等の明示指示があったとき
- 大規模リファクタリング・依存関係変更など影響範囲を絞り込めない作業のとき
計画書に「全体テスト」と明示されていても、ユーザーから直接の指示がなければ対象テストに絞る。
完了条件
実行コマンドと生出力(終了コード・緑赤の集計行)を応答に提示して完了とする。貼れないなら未完。
なぜ絞り込むか
- 全範囲テストは実行時間が長く(10分超など)、ローカルリソース起因のノイズ(OOM等)が混入しやすい
- 修正範囲外テストは確認価値が低い
- 失敗時の原因特定も範囲を絞った方が容易