技術情報 > Java > JUnit4

JUnit4

JUnitとは?

Java用の単体テストフレームワーク。

JUnitのようなテスティングフレームワークを活用することで、次のメリットがある。

  1. テストを統一な方法で作成できる
    → 他人が見ても分かりやすい
  2. テストが簡単にできる

また、単体テストコードがあれば、仕様変更時のデグレードを早い段階で発見することができる。

JUnit4の特徴は?

J2SE5。0のアノテーションを取り入れ、テスト記述方法のルールがシンプルになった。

JUnit3との違いは?

記述方法の違いは?

テストクラス

通常テストメソッド

例外検証テストメソッド

テストメソッドの前処理

テストメソッドの後処理

新しい機能は?

パフォーマンス検証テストメソッド

「@Test」の「timeout」要素に実行時間を記述する(ms)。

// 1500ms以下であること。
@Test(timeout=1500)
public void time() throws InterruptedException {
  Thread。sleep(1000);
}

テストを無視する

「@Ignore」を記述する。

@Ignore("実行しない理由を記述する")
@Test
public void foo() {
  String string = "無視する";
  assertEquals("無視する", string);
}

オブジェクト型配列の検証

assertEquals(Object[] array1, Object[] array2);
assertEquals(String message, Object[] array1, Object[] array2);

テストクラスの前処理

「@BeforeClass」を記述する。
テストクラス実行前に一度だけ実行される。

@BeforeClass
public void beforClass() {
  // 前処理
}

テストクラスの後処理

「@AfterClass」を記述する。
テストクラス実行後に一度だけ実行される。

@AfterClass
public void afterClass() {
  // 後処理
}

パラメータの指定

テストクラスに「@RunWith(Parameterized.class)」を記述する。
パラメータ指定に「@Parameters」を記述する。
テスト対象値をパラメータで指定することで、テストコードの増大を防ぐことができる。

パラメータの指定 - テストメソッドが複数ある場合

現状のパラメータ指定の場合、テストメソッド毎パラメータを指定することはできない。
また、テストメソッドが複数ある場合の実行動作以下の通り。

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

@RunWith(Parameterized.class)
public class CalculatorTest {
	private int x;
	private int y;
	private int expected;
	public CalculatorTest(int x, int y, int expected) {
		this.x = x;
		this.y = y;
		this.expected = expected;
	}
	
	@Parameters
	public static List parameter() {
		List<Integer[]> list = new ArrayList<Integer[]>();
		list.add(new Integer[]{0, 0, 0});
		list.add(new Integer[]{2, -1, 1});
		list.add(new Integer[]{1, 1, 2});
		return list;
	}
	
	@Test
	public void add() {
		System.out.println("addテストメソッド実行");
		System.out.println("x=" + this.x + "  y=" + this.y + "  expected=" + this.expected);
	}
	
	@Test
	public void subtract() {
		System.out.println("subtractテストメソッド実行");	
		System.out.println("x=" + this.x + "  y=" + this.y + "  expected=" + this.expected);
	}

}

実行順序

アノテーション一覧

アノテーション意味
@Testテスト対象のメソッドに記述する。
exception:例外テストの際、例外クラス名を記述する。
timeout:パフォーマンス検証テストの際、実行時間をミリ秒で記述する。
@Beforeテストメソッドの前処理のメソッドに記述する。
@Afterテストメソッドの後処理のメソッドに記述する。
@BeforeClassテストクラスの前処理のメソッドに記述する。
@AfterClassテストクラスの後処理のメソッドに記述する。
@Ignoreテスト対象外にするメソッドに記述する(テストを実行しない場合に記述する)。
@Parametersテストで使用するパラメータを生成するメソッドに記述する。
@RunWith@Parametersで定義したパラメータを使用する等のテストランナを記述する。

Eclipse関連

サポートしているEclipseのバージョンは?

Eclipse3.2〜

EclipseでJUnit4を使用するには?

  1. [File] -> [New] -> [JUnit Test Case]を選択する。
  2. 一番上のラジオボタンで「New JUnit 4 test」を指定する。

便利なプラグイン


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS