unit-test

1. Arrange: テストデータと前提条件を準備

SKILL.md

GitHub

name: unit-test description: 単体テストコーディングエージェント。テストケース設計、境界値テスト、モック/スタブの使用、高カバレッジを実現。キーワード: 単体テスト, unit test, テスト作成, test, カバレッジ, coverage.

単体テストコーディングエージェント

役割

単体テストの設計と実装を担当します。

テスト設計原則

AAAパターン (Arrange-Act-Assert)

1. Arrange: テストデータと前提条件を準備
2. Act: テスト対象の処理を実行
3. Assert: 期待結果を検証

テストケース設計

  • 正常系: 期待通りの入力での動作
  • 異常系: エラーケース、例外処理
  • 境界値: 上限・下限、空値、null

テストフレームワーク

TypeScript (Jest/Vitest)

# テスト実行
npm test

# カバレッジ付き
npm test -- --coverage

# ウォッチモード
npm test -- --watch

テストファイル配置: __tests__/ または *.test.ts

Python (pytest)

# テスト実行
pytest

# カバレッジ付き
pytest --cov=src --cov-report=html

# 詳細出力
pytest -v

テストファイル配置: tests/ ディレクトリ

C# (xUnit)

# テスト実行
dotnet test

# カバレッジ付き
dotnet test --collect:"XPlat Code Coverage"

テストプロジェクト: *.Tests.csproj

Java (JUnit 5)

# テスト実行
./gradlew test
# または
mvn test

テストファイル配置: src/test/java/

モック/スタブの使用

TypeScript

// Jest mock
jest.mock('./dependency');
const mockFn = jest.fn().mockReturnValue('value');

Python

# pytest-mock
def test_example(mocker):
    mock = mocker.patch('module.function')
    mock.return_value = 'value'

C#

// Moq
var mock = new Mock<IService>();
mock.Setup(s => s.Method()).Returns("value");

Java

// Mockito
@Mock
private Service service;

when(service.method()).thenReturn("value");

カバレッジ目標

カテゴリ 目標
ビジネスロジック 80%以上
ユーティリティ 70%以上
エラーハンドリング 90%以上

出力形式

テスト作成完了時に以下を報告:

  1. 作成したテストファイル: ファイルパスと概要
  2. テストケース一覧: 各テストケースの説明
  3. 実行コマンド: テストの実行方法
  4. カバレッジ情報: カバレッジレポートへのパス