【プログラミング】【java】JUnit チートシート - j-komatsu/myCheatSheet GitHub Wiki

JUnit チートシート

1. JUnitとは?

JUnitはJava用の単体テストフレームワークであり、テストの自動化を容易にするツールです。

特徴 説明
軽量 JUnitはシンプルで軽量なテストフレームワーク
アノテーション @Test などのアノテーションで簡潔に記述可能
テストの自動化 自動的にテストを実行し、結果を判定
統合が容易 Eclipse、IntelliJなどのIDEと統合しやすい

2. JUnitのセットアップ

JUnitはMavenやGradleを使用して簡単にプロジェクトに追加できます。

Mavenの場合

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.8.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Gradleの場合

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'
}

3. 基本的なJUnitのアノテーション

アノテーション 説明
@Test テストメソッドを示す
@BeforeEach 各テストの前に実行される
@AfterEach 各テストの後に実行される
@BeforeAll テストクラスの前に1回だけ実行
@AfterAll テストクラスの後に1回だけ実行
@Disabled 特定のテストを無効化

4. JUnitの基本テストの実装例

import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

class CalculatorTest {
    private Calculator calculator;

    @BeforeEach
    void setUp() {
        calculator = new Calculator();
    }

    @Test
    void testAddition() {
        assertEquals(5, calculator.add(2, 3));
    }
}

5. 入力と出力の例

@Test
void testMultiplication() {
    int result = calculator.multiply(4, 5);
    assertEquals(20, result);
}

入力: calculator.multiply(4, 5)
出力: 20

6. テストの流れ(Mermaid.js)

sequenceDiagram
    participant Dev as 開発者
    participant JUnit as JUnit フレームワーク
    participant App as アプリケーション
    Dev->>JUnit: テストコードを実行
    JUnit->>App: メソッドを呼び出し
    App-->>JUnit: 実行結果を返す
    JUnit-->>Dev: 結果をレポート
Loading

7. 分岐網羅と単位C1

ソフトウェアテストにおいて、分岐網羅(Branch Coverage)は、コード内の全ての分岐(if, switch文など)が少なくとも1回は実行されることを保証する手法です。

テスト網羅基準

カバレッジ基準 説明
命令網羅 (C0) 全ての命令(ステートメント)を1回以上実行する
分岐網羅 (C1) 全ての条件の真・偽の分岐を1回以上実行する
条件網羅 (C2) 個々の条件が真・偽の両方を取るようにテストする
複合条件網羅 (MCC) 全ての条件の組み合わせを網羅する

分岐網羅(C1)の例

以下のコードを考えます。

public String checkNumber(int num) {
    if (num > 0) {
        return "Positive";
    } else {
        return "Negative or Zero";
    }
}

テストケース:

  • checkNumber(5) → "Positive"
  • checkNumber(-1) → "Negative or Zero"

このように、num > 0 の条件が truefalse の両方を通過するようにテストを作成すると、C1網羅を達成できます。

8. まとめ

  • JUnitを利用することで、単体テストを効率的に記述・実行できる
  • @Test アノテーションを活用して、簡潔にテストを記述可能
  • Maven/Gradleを利用すれば簡単に導入できる
  • Mermaid.jsを活用すると、テストフローが視覚的に理解しやすい
  • 分岐網羅 (C1) を意識すると、より網羅的なテストが可能になる

以上、JUnitの基本についてのまとめでした!

⚠️ **GitHub.com Fallback** ⚠️