3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JAVA で 単体テストを自動化するための JUnit についてを解説

Last updated at Posted at 2024-10-25

■ はじめに


JAVAでコーディングしたコードの単体テストを行う際には様々な方法がありますが、
今回紹介するJUnitはJavaで単体テストを自動化するためのフレームワークです。

テストを自動化することは人為的なテストの漏れやミスを減らし、プロジェクトの品質向上に繋がります。
この記事ではJUnitの基本的な使い方から実際のテストケースの作成方法を解説していきます。

■ 目次


  1. JUnitのインストールとセットアップ
  2. JUnitでの基本的なテストの書き方
  3. アサーションを使ったテストの実施
  4. JUnitのライフサイクルメソッド
  5. まとめ

1. JUnitのインストールとセットアップ


まず最初にJUnitを使うための環境をセットアップを行う必要があります。
MavenGradleなどのビルドツールを使って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など、テストの前後で共通処理を実行可能
    • 特定の処理を各テストメソッドの前後で実行できる
  1. テストを簡単に書けるようにしてくれる「@」で始まる注釈

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?