unit-testlisted
Install: claude install-skill ijufumi/claude-skills
# ユニットテスト作成・修正スキル
テスト対象コードの分析からテストケース設計、テストコード実装、テスト実行までを一貫して支援するスキル。
## 前提条件
- テスト対象のプロジェクトがカレントディレクトリまたはユーザーが指定するディレクトリに存在すること
- ソースコードが読み取り可能であること
- テストフレームワークがプロジェクトに導入済みであること(未導入の場合はユーザーに確認の上セットアップする)
## テスト方針
本スキルは以下の方針に基づいてテストを作成する:
1. **正常系と異常系の両方を網羅**: 期待通りの動作だけでなく、エラーケースや境界値も必ずテストする
2. **データベースアクセスはリアルDB**: DBにアクセスするコードは、テスト用のデータベースを使って実際にアクセスするテストを書く。通常実行用DBとは別のテスト用DBを用意する
3. **それ以外はモック**: DB以外の外部依存(API呼び出し、ファイルI/O等)はモックを使用する
4. **テストの独立性**: 各テストケースは他のテストに依存せず、単独で実行可能にする
5. **テストデータのクリーンアップ**: DBテストではテスト前後にデータをクリーンアップし、テスト間の副作用を防ぐ
## ワークフロー概要
```
[Step 1: プロジェクト構成の把握]
→ [Step 2: テスト対象コードの特定]
→ [Step 3: テストケースの設計]
→ [Step 4: ユーザーにテストケース設計を確認]
→ [Step 5: 作業ブランチの作成]
→ [Step 6: テストコードの実装]
→ [Step 7: テストの実行と品質確認]
→ [Step 8: ユーザーにテストコードを確認]
→ [Step 9: 修正・追加対応]
→ [Step 10: リモートプッシュとPR作成]
```
---
## Step 1: プロジェクト構成の把握
プロジェクトの言語、フレームワーク、テストフレームワーク、既存のテスト構成を把握する。
### 1-1: 言語・フレームワークの特定
```bash
# ビルドファイル・設定ファイルからの推定
ls package.json tsconfig.json go.mod go.sum Cargo.toml pom.xml build.gradle build.gradle.kts settings.gradle.kts build.sbt project/build.properties Gemfile requirements.txt pyproject.toml setup.py composer.json pubspec.yaml Makefile 2>/dev/null
```
### 1-2: テストフレームワークの特定
| 言語 | テストフレームワーク例 | 確認方法 |
|------|----------------------|----------|
| Go | testing(標準), testify | `go.mod` で testify 等の依存を確認 |
| Java/Kotlin | JUnit 5, Mockito, MockK | `build.gradle` / `pom.xml` の testImplementation |
| Scala | ScalaTest, Spe