【プログラミング】【java】JUnit チートシート - j-komatsu/myCheatSheet GitHub Wiki
JUnitはJava用の単体テストフレームワークであり、テストの自動化を容易にするツールです。
特徴 | 説明 |
---|---|
軽量 | JUnitはシンプルで軽量なテストフレームワーク |
アノテーション |
@Test などのアノテーションで簡潔に記述可能 |
テストの自動化 | 自動的にテストを実行し、結果を判定 |
統合が容易 | Eclipse、IntelliJなどのIDEと統合しやすい |
JUnitはMavenやGradleを使用して簡単にプロジェクトに追加できます。
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'
}
アノテーション | 説明 |
---|---|
@Test |
テストメソッドを示す |
@BeforeEach |
各テストの前に実行される |
@AfterEach |
各テストの後に実行される |
@BeforeAll |
テストクラスの前に1回だけ実行 |
@AfterAll |
テストクラスの後に1回だけ実行 |
@Disabled |
特定のテストを無効化 |
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));
}
}
@Test
void testMultiplication() {
int result = calculator.multiply(4, 5);
assertEquals(20, result);
}
入力: calculator.multiply(4, 5)
出力: 20
sequenceDiagram
participant Dev as 開発者
participant JUnit as JUnit フレームワーク
participant App as アプリケーション
Dev->>JUnit: テストコードを実行
JUnit->>App: メソッドを呼び出し
App-->>JUnit: 実行結果を返す
JUnit-->>Dev: 結果をレポート
ソフトウェアテストにおいて、分岐網羅(Branch Coverage)は、コード内の全ての分岐(if, switch文など)が少なくとも1回は実行されることを保証する手法です。
カバレッジ基準 | 説明 |
---|---|
命令網羅 (C0) | 全ての命令(ステートメント)を1回以上実行する |
分岐網羅 (C1) | 全ての条件の真・偽の分岐を1回以上実行する |
条件網羅 (C2) | 個々の条件が真・偽の両方を取るようにテストする |
複合条件網羅 (MCC) | 全ての条件の組み合わせを網羅する |
以下のコードを考えます。
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
の条件が true
と false
の両方を通過するようにテストを作成すると、C1網羅を達成できます。
- JUnitを利用することで、単体テストを効率的に記述・実行できる
-
@Test
アノテーションを活用して、簡潔にテストを記述可能 - Maven/Gradleを利用すれば簡単に導入できる
- Mermaid.jsを活用すると、テストフローが視覚的に理解しやすい
- 分岐網羅 (C1) を意識すると、より網羅的なテストが可能になる
以上、JUnitの基本についてのまとめでした!