ln-743-test-infrastructure について
TypeScript/React、.NET、Python プロジェクトのテスト基盤を設定するスキルです。技術スタックに応じてフレームワークを選び、カバレッジ設定とサンプルテストを用意して実行を検証します。
主な機能
- 01技術スタックと既存テストの検出
- 02Vitest、xUnit、pytest の設定
- 03カバレッジツールとしきい値の設定
- 04テスト構成とサンプルテストの作成
- 05テストとカバレッジ実行の検証
活用シーン
- 01テスト設定のないプロジェクトへの基盤追加
- 02カバレッジレポートとテスト例の整備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ levnikolaevich/ claude-code-skills --skill ln-743-test-infrastructureインストール後、Claude Code で/ln-743-test-infrastructureを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/testing_guide.mdreferences/scripts/conftest_template.pypytest_test_template.pyreferences/templates/pytest_config_template.tomlreact_test_template.tsxvitest_setup_template.tsvitest_template.tsxunit_csproj_template.xmlxunit_test_template.cs詳細
パス: ファイルパス(
references/、../ln-*)は、このスキルディレクトリを基準としています。
ln-743-test-infrastructure
タイプ: L3 ワーカー カテゴリー: 7XX プロジェクトのブートストラップ
プロジェクト向けに、テストフレームワーク、カバレッジツール、サンプルテストをセットアップします。
目的と範囲
実行すること:
- プロジェクトのスタックを検出し、適切なテストフレームワークを選択します
- テスト設定ファイルを作成します
- しきい値を設定してカバレッジレポートをセットアップします
- パターンを示すサンプルテストを作成します
- テストスイートが正常に実行されることを確認します
実行しないこと:
- リンターの設定(これは ln-741 が行います)
- pre-commit フックのセットアップ(これは ln-742 が行います)
- 実際のアプリケーションのテスト作成(これは開発者が行います)
サポート対象のスタック
| テクノロジー | テストフレームワーク | カバレッジツール | 設定ファイル |
|---|---|---|---|
| TypeScript/React | Vitest | v8/Istanbul | vitest.config.ts |
| .NET | xUnit | Coverlet | *.Tests.csproj |
| Python | pytest | pytest-cov | pytest.ini または pyproject.toml |
フェーズ 1:既存のテストを確認する
テストインフラストラクチャを作成する前に、既存のものを確認します。
確認するファイル:
| スタック | テストの目印 |
|---|---|
| TypeScript | vitest.config.*、jest.config.*、*.test.ts、*.spec.ts |
| .NET | *.Tests.csproj、*.IntegrationTests.csproj |
| Python | pytest.ini、conftest.py、tests/、test_*.py |
判断ロジック:
- テストのセットアップがすでに完了している場合:スキップ(ユーザーに伝えます)
- セットアップが一部完了している場合:拡張するか置き換えるかを確認します
- テストがない場合:テンプレートから作成します
フェーズ 2:テスト設定を作成する
TypeScript/React(Vitest)
vitest.config.ts を作成します:
- v8 カバレッジプロバイダーを使用します(Istanbul より高速です)
- React 用に jsdom 環境を設定します
- カバレッジのしきい値を設定します(最低 80%)
- testing-library 用のセットアップファイルを作成します
依存関係:
npm install -D vitest @vitest/coverage-v8 @testing-library/react @testing-library/jest-dom jsdom
.NET(xUnit)
テストプロジェクトを作成します:
dotnet new xunit -n {Project}.Tests
dotnet sln add tests/{Project}.Tests
依存関係(.csproj 内):
- Microsoft.NET.Test.Sdk
- xunit
- xunit.runner.visualstudio
- Moq
- FluentAssertions
- coverlet.collector
Python(pytest)
pyproject.toml に追加するか、pytest.ini を作成します:
- テスト検出パスを設定します
- カバレッジのしきい値を設定します(最低 80%)
- カバレッジレポートを設定します
依存関係:
pip install pytest pytest-cov pytest-asyncio
# OR with uv:
uv add --dev pytest pytest-cov pytest-asyncio
フェーズ 3:テストディレクトリ構造を作成する
TypeScript
src/
├── components/
│ ├── Button.tsx
│ └── Button.test.tsx # Co-located tests
├── test/
│ └── setup.ts # Test setup file
.NET
tests/
├── {Project}.Tests/
│ ├── Controllers/
│ │ └── SampleControllerTests.cs
│ ├── Services/
│ └── {Project}.Tests.csproj
└── {Project}.IntegrationTests/ # Optional
Python
tests/
├── conftest.py # Shared fixtures (from conftest_template.py)
├── unit/
│ └── test_sample.py
└── integration/ # Optional
FastAPI/非同期プロジェクトの場合は、共有の非同期 HTTP クライアントフィクスチャを含む conftest.py を conftest_template.py から生成します。プロジェクトに合わせてアプリのインポートパスを調整してください。
フェーズ 4:サンプルテストを作成する
各スタックにつき 1 つ、以下を示すサンプルテストを作成します:
- AAA パターン(Arrange-Act-Assert)
- テストの命名規則
- 基本的なアサーション
- フレームワーク固有のパターン
TypeScript のサンプルテスト
以下を示します:
- testing-library の render()
- screen クエリ
- Jest-dom マッチャー
.NET のサンプルテスト
以下を示します:
- [Fact] 属性
- モック作成に使う Moq
- FluentAssertions の構文
Python のサンプルテスト
以下を示します:
- pytest フィクスチャ
- assert 文
- パラメーター化テスト(任意)
フェーズ 5:テストの実行を確認する
セットアップ後、テストが動作することを確認します。
TypeScript:
npm test
npm run test:coverage
想定結果:サンプルテストが成功し、カバレッジレポートが生成されます
.NET:
dotnet test
dotnet test --collect:"XPlat Code Coverage"
想定結果:サンプルテストが成功し、カバレッジが収集されます
Python:
pytest
pytest --cov=src --cov-report=term-missing
想定結果:サンプルテストが成功し、カバレッジレポートが表示されます
失敗した場合: テスト設定と依存関係を確認し、サンプルテストの構文を検証してください。
カバレッジ要件
| 指標 | 最低値 | 目標値 |
|---|---|---|
| 行 | 70% | 80% |
| 分岐 | 70% | 80% |
| 関数 | 70% | 80% |
| ステートメント | 70% | 80% |
カバレッジがしきい値を下回った場合に CI が失敗するよう設定してください。
重要なルール
RULE 1: カバレッジのしきい値を必ず設定してください。例外はありません。
RULE 2: サンプルテストは必ず合格するようにしてください。壊れたサンプルを作成しないでください。
RULE 3: すべてのサンプルテストで AAA パターン(Arrange-Act-Assert)を使用してください。
RULE 4: ユニットテストはソースコードと同じ場所に配置する(TypeScript)か、tests/ ディレクトリを使用してください(.NET、Python)。
Monitor(2.1.98+): スキャフォールド後のテスト検証に 30 秒以上かかると予想される場合は、Monitor を使用してください。代替手段:Bash(run_in_background=true)。
完了の定義
- テストフレームワークがインストールされ、設定されている
- カバレッジツールが 80% のしきい値で設定されている
- テストディレクトリ構造が作成されている
- サンプルテストが作成され、合格している
-
npm test/dotnet test/pytestが正常に実行される - カバレッジレポートが生成される
- 以下の内容をユーザーに伝えている:
- テストの実行方法
- 新しいテストの追加場所
- カバレッジ要件
参考ファイル
| ファイル | 目的 |
|---|---|
| vitest_template.ts | Vitest 設定テンプレート |
| vitest_setup_template.ts | テストセットアップファイル |
| react_test_template.tsx | React コンポーネントのテスト |
| xunit_csproj_template.xml | .NET テストプロジェクト |
| xunit_test_template.cs | xUnit テストの例 |
| pytest_config_template.toml | pytest 設定 |
| pytest_test_template.py | pytest テストの例 |
| conftest_template.py | 共有非同期フィクスチャ(FastAPI) |
| testing_guide.md | テストのベストプラクティス |
エラー処理
| エラー | 原因 | 解決方法 |
|---|---|---|
| Vitest が見つからない | インストールされていない | npm install -D vitest |
| jsdom エラー | 依存関係が不足している | npm install -D jsdom |
| xUnit の検出に失敗する | SDK バージョンの不一致 | Microsoft.NET.Test.Sdk を更新する |
| pytest が見つからない | PATH に含まれていない | pip install pytest |
| カバレッジが 0% | ソースパスが誤っている | coverage.include の設定を確認する |
バージョン: 3.0.0 最終更新日: 2026-03-18