HOME > 技術情報 > 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」を記述する。
テスト対象値をパラメータで指定することで、テストコードの増大を防ぐことができる。

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

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

assertThat (Junit4.4〜)

Junit4.4から新しいアサーションメソッド「assertThat」が追加された。
これまでのアサーションメソッドは、メソッド自体がアサーション条件であったが、「assertThat」では、引数にアサーション条件を指定する。

同値チェック
今まで

// assertEquals(期待値, 実行値);
assertEquals(3, 1 + 2);

assertThatを使用

// assertThat(実行値, is(期待値));
assertThat(1 + 2, is(3));

assertThatアサーションメソッドを使用すると、正しいかの条件の指定(「assertThatメソッドの引数」)をより英語の文のような感じになる。

注意事項
「import static」で以下のクラスをインポートすること。
上記サンプルの「is()」は、「org.hamcrest.CoreMatchers」クラスのスタティックメソッド。

// JMockのマッチングクラス
import static org.hamcrest.CoreMatchers.*;
// JUnitのマッチングクラス
import static org.junit.matchers.JUnitMatchers.*;

実行順序

アノテーション一覧

アノテーション意味
@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