JUnitテストフレームワークの概要
JUnitはJavaアプリケーションのユニットテストを効率的に行うためのフレームワークです。このツールにより、開発者はコードの正確性を検証しながら品質を保つことができます。
ユニットテストの重要性
ユニットテストはソフトウェアの最小実行単位(通常はメソッド)を検証する手法です。JUnitはアノテーションとアサーションメソッドを提供することで、テストコードの作成と実行を簡素化します。
基本的な使用手順
- MavenまたはGradle経由でJUnitライブラリをプロジェクトに追加
- 対象クラスごとにテストクラスを作成し、各メソッドに対してテストメソッドを実装
- テストメソッドはpublicで引数なし、戻り値なしであること
- @Testアノテーションをテストメソッドに付与
- IDEのJUnitランナーを使用してテストを実行
アサーションの基本
org.junit.Assert.assertEquals(expectedValue, actualValue);
期待値と実測値の比較に使用されます。不一致の場合はテストが失敗します。
主要アノテーション
- @Test - テストメソッドの定義
- @BeforeEach - 各テストメソッド実行前の前処理
- @AfterEach - 各テストメソッド実行後の後処理
- @BeforeAll - クラス全体の初期化処理(staticメソッド)
- @AfterAll - クラス全体の終了処理(staticメソッド)
実装例:計算機クラス
public class Calculator {
public int sum(int a, int b) {
return a + b;
}
public int difference(int a, int b) {
return a - b;
}
public int product(int a, int b) {
return a * b;
}
public int quotient(int a, int b) {
if (b == 0) {
throw new IllegalArgumentException("除数はゼロ以外を指定してください");
}
return a / b;
}
}
テストクラスの実装
import org.junit.jupiter.api.*;
public class CalculatorTest {
private Calculator calculator;
@BeforeAll
static void setupClass() {
System.out.println("テスト開始準備");
}
@BeforeEach
void setup() {
calculator = new Calculator();
}
@Test
void sumTest() {
int result = calculator.sum(2, 3);
Assertions.assertEquals(5, result, "2+3の結果が5であること");
}
@Test
void differenceTest() {
int result = calculator.difference(5, 2);
Assertions.assertEquals(3, result, "5-2の結果が3であること");
}
@Test
void productTest() {
int result = calculator.product(3, 4);
Assertions.assertEquals(12, result, "3×4の結果が12であること");
}
@Test
void divideTest() {
int result = calculator.quotient(10, 2);
Assertions.assertEquals(5, result, "10÷2の結果が5であること");
}
@Test
void divideByZeroTest() {
Assertions.assertThrows(IllegalArgumentException.class, () -> {
calculator.quotient(5, 0);
}, "ゼロ除算時にIllegalArgumentExceptionがスローされること");
}
@AfterEach
void teardown() {
calculator = null;
}
@AfterAll
static void cleanup() {
System.out.println("テスト終了処理");
}
}
テスト実行結果
テスト成功時は緑色のインジケータ、失敗時は赤色のインジケータが表示されます。