まめぞうの技術メモ

IT関連で勉強したことをメモします

Javaで自動テストをする方法【Junitを使おう】

最近、いろいろとJavaのことを調べています。

今日は、Javaの自動テストについての記事です。

同じプログラムを使いまわすことが多いので、よく使うプログラムには、テストコードを準備して、テストを自動で行うのが主流です。

ルンバのように自動テスト
ルンバのように自動テスト

Javaで自動テストを行うなら「Junit」を使おう

Javaで自動テストをするには、「Junit」が有名です。これを使ってテストしてみましょう。

⇒「Junit公式ページ

導入方法がわからない人は、以下から試してみてください。

Junitの導入方法

Maven Repository」に、「Junit」と入れると、以下のような画面になります。

現在の最新版は、「Junit Jupiter API」ですね。これをクリック。

Junit

次の画面で、好きなバージョンをクリックしてください。

Junit

このページに、Mavenはじめ、各種取り方のコードが書いてあるので、それをエディタに貼れば、ダウンロードできますよ。

※貼り方、ダウンロード方法は、エディタにより異なります

エディタに貼る

サンプルコードを動かしてみる

それではサンプルコードを動かしてみましょう。

テスト対象のプログラムは、単純な足し算引き算のプログラムです。

Caliculator.java

class Caliculater {
    /**
     * 足し算の結果を返す
     * @param x
     * @param y
     * @return
     */
    public int plus(int x, int y){
        return x + y;
    }

    /**
     * 引き算の結果を返す
     * @param x
     * @param y
     * @return
     */
    public int minus(int x, int y){
        return x - y;
    }

    public static void main(String[] args){
        int x = 10;
        int y = 5;

        // 自分自身をインスタンス化
        Caliculater cal = new Caliculater();

        // 足し算の結果を出力 → 15
        System.out.println("plus  : " + cal.plus(x, y));

        // 引き算の結果を出力 → 5
        System.out.println("minus : " + cal.minus(x, y));
    }
}

実行してみると、こんな感じです。

実行結果

はい、ただの足し算、引き算です。

CaliculatorTest.java

いよいよ本題、テストコードです。

ポイントとしては、冒頭でjunitをインポートしていること。

そして、assertEqualsメソッドで、予想通りの結果になっているかをチェックしています。

import static org.junit.jupiter.api.Assertions.assertEquals;

class CaliculaterTest {

    // Caliculator をインスタンス化
    Caliculater calc = new Caliculater();

    /**
     * 実際にテストを行うメソッド
     */
    public void testCaliculater(){
        // 足し算の結果を確認、左が期待値、右が実際の結果
        assertEquals(15, calc.plus(10,5));

        // 引き算の結果を確認、左が期待値、右が実際の結果
        assertEquals(5, calc.minus(10,5));
    }

    public static void main(String[] args){
        // 自分自身をインスタンス化
        CaliculaterTest ct = new CaliculaterTest();

        ct.testCaliculater();
    }
}

動かしてみると、こんな感じです。なんにも出ません。

つまり、テストが上手く行ったってことです。

実行結果

逆に、assertEqualsのを変えてみると、

assertEquals(15, calc.plus(14,5));

以下のようにエラーになります。 エラー

これだと見辛いので、assertEqualsの第3引数に、失敗したときのメッセージを追記することができます。

ちょっとだけ分かりやすくなりましたね。

エラーが見やすくなった

今日も自分の勉強をメモにしてみました。

テストコードツール「Junit」便利ですね。

みなさんもお試しあれ。