mcpField
J
junit

junit

github.com/partme-aiテスト・品質716117 回インストール3 週間前に更新
リポジトリ

junit について

Java と Kotlin の単体テスト作成を支援するスキルです。JUnit 4/JUnit 5 のテストライフサイクル、アサーション、パラメーター化テスト、モック、Maven または Gradle での実行を扱います。

主な機能

  1. 01JUnit 4/JUnit 5 のテスト作成
  2. 02ライフサイクルアノテーションとアサーション
  3. 03パラメーター化テストの作成
  4. 04Mockito による依存のモック化
  5. 05Maven/Gradle でのテスト実行

活用シーン

  1. 01Java/Kotlin の単体テスト作成
  2. 02セットアップと後処理を含むテスト構成
  3. 03複数の入力値を使ったテスト
  4. 04依存をモック化した単体テスト

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/partme-ai/full-stack-skills --skill junit

インストール後、Claude Code で/junitを入力して読み込まれたか確認します。

同梱ファイルLICENSE.txt

詳細

このスキルを使用するタイミング

ユーザーが次のことを希望する場合は、いつでもこのスキルを使用してください。

  • JUnit 4 または JUnit 5(Jupiter)を使用して Java または Kotlin の単体テストを作成する
  • アノテーション(@Test、@BeforeEach、@AfterEach、@ParameterizedTest)を使用する
  • アサーション(assertEquals、assertThrows、assertAll)を適用する
  • Mockito または AssertJ を統合して、モックや流れるようなアサーションを使用する
  • Maven Surefire または Gradle でテストの実行を設定する

このスキルの使い方

ワークフロー
  1. @Test を付けたテストクラスとテストメソッドを作成する
  2. ライフサイクルアノテーションを使用して、テスト状態をセットアップおよびティアダウンする
  3. アサーションを使用して、期待される動作を検証する
  4. Mockito で依存関係をモックし、単体テストを分離する
1. 基本的な JUnit 5 テスト
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class CalculatorTest {
    @Test
    void shouldAddTwoNumbers() {
        Calculator calc = new Calculator();
        assertEquals(5, calc.add(2, 3));
    }

    @Test
    void shouldThrowOnDivideByZero() {
        Calculator calc = new Calculator();
        assertThrows(ArithmeticException.class, () -> calc.divide(1, 0));
    }
}
2. ライフサイクルアノテーション
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.AfterEach;

class UserServiceTest {
    private UserService userService;

    @BeforeEach
    void setUp() {
        userService = new UserService(new InMemoryUserRepository());
    }

    @AfterEach
    void tearDown() {
        // Clean up resources
    }
}
3. パラメーター化テスト
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;

class StringTest {
    @ParameterizedTest
    @CsvSource({"hello,5", "'',0", "junit,5"})
    void shouldReturnCorrectLength(String input, int expected) {
        assertEquals(expected, input.length());
    }
}
4. Mockito を使ったモック
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.mockito.Mockito.*;

@ExtendWith(MockitoExtension.class)
class OrderServiceTest {
    @Mock private OrderRepository orderRepository;
    @InjectMocks private OrderService orderService;

    @Test
    void shouldSaveOrder() {
        Order order = new Order("item-1", 2);
        orderService.placeOrder(order);
        verify(orderRepository).save(order);
    }
}
5. テストの実行
# Maven
mvn test

# Gradle
gradle test

# With coverage (JaCoCo)
mvn test jacoco:report

ベストプラクティス

  • テストは独立して繰り返し実行できるようにし、実行順序や外部サービスへの依存を避けます
  • Mockito を使用して、テスト対象のユニットを依存関係から分離します
  • テストには内容が分かる名前を付けます(例:shouldReturnEmptyListWhenNoUsersExist)
  • カバレッジとテスト速度のバランスを取り、CI ではテストスイート全体を実行します
  • @Nested クラスを使用して、関連するテストケースをグループ化します

リソース

キーワード

junit, JUnit 5, JUnit Jupiter, 単体テスト, Java, Kotlin, アサーション, Mockito, パラメーター化テスト, BeforeEach, AfterEach, テストライフサイクル

コメント