【Java】JUnitの基本まとめ(基礎知識、よく使う検証メソッド)

【Java】JUnitの基本まとめ (基礎知識、よく使う検証メソッド) バックエンド
スポンサーリンク

はじめに

ぴんくうさぎ
ぴんくうさぎ

JUnitを使った単体テストの方法が知りたい!

みどりがめ
みどりがめ

OK!今回はJUnit5の基礎知識の整理、

よく使う検証メソッドについて紹介するよ!

Javaのテストフレームワークである、JUnit5の基礎知識、よく使う検証メソッド(Assertion)を紹介します。この記事で、JUnitの基礎知識について抑えることができます。

この記事で分かること
  • JUnitとは何か
  • テストクラスの作成方法と主要なアノテーションについて
  • テストクラスでよく使用するメソッドの使い方について

また、私自身がJUnitを学習する際には、以下の書籍にお世話になりました。
JUnitの参考書としては頭一つ抜けて人気で王道書籍です。
基本的なところから丁寧に解説されていて、非常に分かりやすいです。これからJUnitを学習する方におすすめです。

JUnitとは?

JUnitはKent Beckらによって開発されたJavaのテスティングフレームワークです。
テスティングフレームワークは、「どうテストコードを書いて、実行して、検証するか」を提供します。

JUnitによるテストコードは、一定のフォーマットで記述するため、誰から見ても読みやすいものとなります。また、作成したテストプログラムは一度作れば何度でも再実行可能となるため、「何度も同じテストを簡単に実行可能」となります。

テストクラスの基礎知識

テスト対象クラス

今回のサンプルにおけるテスト対象クラスは以下のCalculatorクラスです。
足し算、引き算、掛け算、割り算の4つのメソッドを定義しています。

public class Calculator {
    public int plus(int x,int y){
        return x + y;
    }

    public int minus(int x,int y){
        return x - y;
    }

    public int multiply(int x, int y){
        return x * y;
    }

    public float divide(int x, int y){
        if(0 == y) throw new IllegalArgumentException("0で乗算はできません。");
        return (float) x / (float)y;
    }

}

テストクラス

Calculatorクラスに対するテストクラスは以下のようになります。
今回はplusとmultiplyのテストを行なっています。
今回は分かりやすくするため、メソッド名は日本語で記載しています。
赤字箇所の重要ポイントについて以下で説明します。

class CalculatorTest {  //(1)

    Calculator calc;
   
  @BeforeEach  //(2)
    void setUp(){
        calc = new Calculator();
    }

    @Test  //(2)
    void plusで5と10の和が取得できる(){
        int expected = 15;
        int actual = calc.plus(5,10);
        assertEquals(expected,actual);  //(3)

    }

    @Test  //(2)
    void multiplyで3と4の積が取得できる() {
        int expected = 12;
        int actual = calc.multiply(3,4);
        assertEquals(expected,actual);  //(3)
    }
}

(1)テストクラスの命名について

テストクラスの命名はテスト対象クラス+Testが一般的になっています。
例)Calculatorがテスト対象なら、テストクラスはCalculatorTest

(2)テストクラスで使用するアノテーションについて

テストクラスでは以下を代表とするアノテーションを使用します。
今回のサンプルでは項番1、項番4を使用しています。

項番コード説明
@Test実際にテストを記述するメソッドに付与する。
@BeforeAll全テストの実行前に1度のみ実行するメソッドに付与する。
@AfterAll全テストの実行後に1度のみ実行するメソッドに付与する。
@BeforeEach各テストの実行前に毎回実行するメソッドに付与する。
@AfterEach各テストの実行後に毎回実行するメソッドに付与する。

(3)よく使う検証メソッドについて

テストの実際の判定はこの行で行われています。
第一引数に期待値(expected)、第二引数に実際の値(actual)を記載します。
他にもnullかどうか、例外発生のテストなど様々なものがあり、下表に一部抜粋しています。

 assertEquals(expected,actual);  
項番メソッド内容
1assertEquals(a,b)aとbが等しい(equal)ことをテストする。
2assertNotEquals(a,b)aとbが等しくないことをテストする。
3assertNotNull(a)aがnullでないことをテストする。
4assertTrue(a)aが trueであることをテストする。
5assertTimeOut(a,b)bの処理がa以内に終わることをテストする。
6assertThrows(a,b)bの処理がa(サブクラスを含む)の例外クラスを投げることをテストする。

終わりに

本記事はここまでとなります。
ご覧いただきありがとうございました。ご指摘等がございましたら頂けますと嬉しいです。
引き続き、プログラミングについて定期的に発信していきますのでよろしくお願いします!
また、もしよろしければtwitterもフォローしていただけると嬉しいです!🐢

コメント