【Eclipse】JUnitの作り方 入門
JUnitファイルの作成
以下のような、2つ値を計算するプログラムを JUnitを生成してテストしてみたいと思います。
生成するJUnitの設定をする。
クラス名を選択した状態で、「Ctrl + 9」「command + 9」を押下します。
すると、下記のようなダイアログが表示するので、「はい」で作成しましょう。
生成するJUnitの設定を行う。
以下のように作成するJUnitの設定が開きます。今回、testフォルダー上にJUnitのファイルを作成したいので、
「ソース・フォルダー」は、testフォルダー先を選択しています。
JUintライブラリを追加していない場合は追加する旨のダイアログメッセージが表示されると思うので導入しましょう。
すると下記のようにサンプルが作成されると思います。
JUnitの記述
ではJUnitの中身を書いていきます。
基本的には以下の順で中身を書いていきます。
- オブジェクト(インスタンス)の生成
- 期待値(予想値)の設定
- 実測値の設定
- 期待値と実測値の比較
簡単に言うと、予想通りに結果がなっているか比較して確認する感じです。
・アサーションのインポート
import static org.junit.jupiter.api.Assertions.*;
上記の「import static パッケージ名.クラス名.メソッド名」の所は、
メソッド名を「*」にすることで、クラスのすべてのメソッドを呼び出せるようにしています。
18行目の「assertEquals」は、org.junit.jupiter.api.Assertionsクラスに含まれるメソッドで、「Assertions.assertEquals」のような「クラス名.メソッド名」で書かなくても「assertEquals」で使用できるようになってます。
・Testアノテーションのインポート
import org.junit.jupiter.api.Test;
上記のインポートにより、9行目の「@Test」アノテーションを使用することができます。
「@Test」をメソッド定義の前に記述することで、対象メソッドがテストメソッド
であることを示します。
JUnitの実施
クラスまたはメソッドを選択した状態で、「実行」>「JUnitテスト」を選択します。
するとJUnitのパースペクティブで実行結果が表示されます。
今回は無事に成功したみたいです。
Exceptionの判定
下記のように、テストされる側のソースでは、0で除算しようとするとExceptionが発生するようになっています。
public float div(int x, int y) {
if (y == 0) throw new IllegalArgumentException("0で除算はできません。");
return (float)x / y;
}
JUnit側では、「try-catch」を使う方法と「assertThrows」を使う方法があります。
まずは単純に「try-catch」で例外に流れる方法です。
・「try-catch」を使う
@Test
@DisplayName("Exceptionキャッチのテスト")
void testDivException() {
// オブジェクト生成
SimpleCalculator simCal = new SimpleCalculator();
try {
// 0で除算する。
simCal.div(9, 0);
// エラーにならず後続が呼ばれたら失敗
fail("エラーをキャッチしませんでした。");
} catch (IllegalArgumentException e) {
// エラーをキャッチしたら成功
System.out.print("エラーをキャッチしました。");
}
}
次に例外を検証するメソッドの「assertThrows」を使う方法です。
第一引数には期待する例外のクラスを指定し、第二引数にはラムダ式またはメソッド参照を渡します。もし指定した例外がスローされなかった場合、テストは失敗します。
・「assertThrows」を使う
@Test
void testDivException02() {
// オブジェクト生成
SimpleCalculator simCal = new SimpleCalculator();
// ラムダ式で、0で除算する。
assertThrows(IllegalArgumentException.class, () -> simCal.div(9, 0));
}
実行された結果は以下のようになります。
コメント
0 件のコメント :
コメントを投稿