■ はじめに
JAVAでコーディングしたコードの単体テストを行う際には様々な方法がありますが、
今回紹介するJUnit
はJavaで単体テストを自動化するためのフレームワークです。
テストを自動化することは人為的なテストの漏れやミスを減らし、プロジェクトの品質向上に繋がります。
この記事ではJUnitの基本的な使い方から実際のテストケースの作成方法を解説していきます。
■ 目次
1. JUnitのインストールとセットアップ
まず最初にJUnitを使うための環境をセットアップを行う必要があります。
Maven
やGradle
などのビルドツールを使ってJUnitの依存関係をプロジェクトに追加できますが、
今回はMavenを使ったセットアップ手順となります。
Mavenの依存関係追加
Mavenで使用するpom.xml
に以下のように依存関係の記載を追記します。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
上記を追加し保存することで、JUnitを使用するための準備が整いました。
(Versionは適宜書き換えて使用してください。)
2. JUnitでの基本的なテストの書き方
JUnitの基本としては、アノテーション1を活用してテストを行います。
アノテーションはテスト対象のメソッドが期待通りの動作をするか確認するためのもので、
「@Test
」、「@BeforeEach
」、「@AfterEach
」など様々な種類があります。
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class CalculatorTest {
@Test
void testAdd() {
Calculator calculator = new Calculator();
int result = calculator.add(2, 3);
assertEquals(5, result);
}
}
上記では「@Test
」アノテーションをメソッドの前に付与しており、これはテストメソッドに付けることで、そのメソッドがテストであることを示しています。
メソッドの内容としてはint result = calculator.add(2, 3);
の行で
add()メソッドが2と3を足して5になることを確認しています。
その次の行のassertEquals
はテストでよく使われるアサーションで、resultが5であるかを確認できます。
3. アサーションを使ったテストの実施
JUnitのテストでは上記のassertEquals
のようにアサーションを使って期待される結果を検証します。
以下が代表的なアサーションメソッドです。
アサーション | 説明 |
---|---|
assertEquals(expected, actual) | 期待値と実際の値が一致するかを確認 |
assertTrue(condition) | 条件がtrueであることを確認 |
assertFalse(condition) | 条件がfalseであることを確認 |
assertThrows(expectedType, executable) | 指定した例外がスローされることを確認 |
4. JUnitのライフサイクルメソッド
JUnitには「テスト全体の前に一度だけ実行されるメソッド」や、「各テストの前後に実行されるメソッド」などの
テストの前後で特定の処理を行うためのライフサイクルメソッド
と呼ばれるメソッドがあります。
アノテーション | 説明 |
---|---|
@BeforeAll |
全テストの前に一度だけ実行される(static指定) |
@BeforeEach |
各テストメソッドの前に実行される |
@AfterEach |
各テストメソッドの後に実行される |
@AfterAll |
全テストの後に一度だけ実行される(static指定) |
具体的には以下のように「@」でアノテーションとして使用します。
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Test;
public class CalculatorTest {
@BeforeAll
static void initAll() {
System.out.println("テスト全体の前に一度だけ実行");
}
@BeforeEach
void init() {
System.out.println("各テストの前に実行");
}
@Test
void testAdd() {
// テスト処理
}
@AfterEach
void tearDown() {
System.out.println("各テストの後に実行");
}
@AfterAll
static void tearDownAll() {
System.out.println("テスト全体の後に一度だけ実行");
}
}
5 まとめ
- JUnitとは?
- Javaでの単体テストを自動化するためのフレームワーク
- 自動テストにより、テストの漏れやミスを減らし、プロジェクトの品質向上に貢献
- JUnitのインストールとセットアップ
- MavenやGradleを使ってJUnitをセットアップ可能
- Mavenの場合は、pom.xmlに依存関係を追加して準備完了
- 基本的なテストの書き方
- Testアノテーションを使ってテストメソッドを定義
- アサーションを用いて期待される結果と実際の結果を比較
- アサーションを使ったテスト
- assertEquals、assertTrue、assertFalseなど、各種アサーションでテスト結果を検証
- JUnitのライフサイクルメソッド
- BeforeAllやBeforeEachなど、テストの前後で共通処理を実行可能
- 特定の処理を各テストメソッドの前後で実行できる
-
テストを簡単に書けるようにしてくれる「@」で始まる注釈 ↩