【JUnit】JUnitを使ってテストケースを作りたいときにやること


JUnitとは?

Javaのプログラムをテストするフレームワークのこと
一番メジャーなテストフレームワークなのでJavaを扱う現場ではセットになっているケースが多いと思います。

なぜテストをするのか?

簡単に言えば、作ったプログラムがきちんと動いていることを確かめるためにテストをします。

Javaのように大規模なシステムのためのプログラムや止まっていは行けないミッションクリティカルな要件では特に大切。

あと、テストフレームワークを使わずに手動でプログラムを確かめるのはとっても大変だからです。
(いわゆるIT土○的な残業MAXなお仕事スタイルを納品前にすることもある)

なので、コードを作った時点でテストを作り後続で作ったプログラムができてもきちんと動くことを保証することはとても大事なことであると思います。

GooodBye、スキルアップしない残業人生…

プロダクトコードを作成する。

一番わかり易いモデルとして足し算を行うプログラムをテストしてみよう

本来は先にテストコードを書いてからというお約束があるけれど今回はテストした対象ありきでスタート。サンプルは以下

package sampleTestJava;

public class SampleJava {

    int testMethod(int a, int b) {
        return a + b;

    }
}

テストコードを作成する

今回は一番シンプルなテストの構成を使ってテストをしてみる。

JUnitでは基本的にテストはすべて独立したものとして書くというのが概念の一つとしてあるので、テストを行うには以下の要素が必要です。

  • テストの対象をインスタンス化する
  • 対象メソッドを呼び足して実測値を得る(Actual)
  • 期待値を自分で設定しておく(Expected)
  • 実測値と期待値があっているのかを確かめる(Assertメソッドを使った比較)

以下のコードはテンプレートなコード
インスタンス化するクラスとメソッド名を変えてあげれば自分の書いたクラスのテストができるのでスペニットなどに登録しておくといいかも

package sampleTestJava;

import static org.junit.Assert.*;
import org.junit.Test;
import jdk.jfr.Description;

public class SampleJavaTest {

    @Test //必ずテストアノテーションを入れる
    @Description("足し算をするメソッドのテスト") //慣習的に説明を入れておくのがベター
    public void test_testMethod() {
        //クラスをインスタンス化する。
        SampleJava sut = new SampleJava();
        //インスタンスメソッドを実行して、実測値を取得する。
        int actual = sut.testMethod(1, 2);
        //期待値を代入しておく
        int expected = 3;
        //実測値と期待値を比較する
        assertEquals(actual, expected);
    }

}

テストを実行する

Eclipseには標準機能としてJUnitを使うことができるのでテストファイルを右クリックしてメニューから「JUnitテスト」を選択肢実行してください。

コマンドラインから実行したい場合は以下のような形で実行すること

JUnit5
Java -jar junit-platform-console-standalone-<version>.jar <Options>

JUnit4
Java -cp .:/usr/share/Java/junit.jar org.junit.runner.JUnitCore [test class name]

テスト結果を確認する

テストが正常に実行された場合はグリーンのバーが表示されます。
赤になった場合はテスト実行時に何かしらのエラーが発生している音でスタックトレースを確認して修正してみてください。

development/java