JUnitに関するメモ

Eclipse上で,JUnitを使ってみた.

Eclipse パーフェクトマニュアルベストセレクション の2.1節とか,Java言語で学ぶリファクタリング入門の付録Bとか,“使える”Eclipseプラグイン徹底攻略 - 第7回 単体テストを楽にするプラグイン:ITproとか,JUnit4 - TRANCE ARTS 技術情報Wikiを参考にJUnit関連をいじった.

JUnit4 でのテストメソッドの実行順序

テストメソッドは,下記の順番で実行される.テストメソッドが複数ある場合,各テストメソッドの実行順序は特に保障されていない.よって,実行順序に依存するようなテストメソッドは書かない.

  1. @BeforeClass の実行
  2. 各テストメソッドの実行
    1. @Before
    2. @Test
    3. @After
  3. @AfterClass の実行

@Testアノテーション

アサーションメソッド

アサーションメソッドの一覧と詳細は,
Assert (JUnit API)

以下は,簡単なメモ.

メソッド テスト内容
assertTrue(condition) trueであるかのチェック
assertFlase(condition) falseであるかのチェック
assertEquals(expected, actual) 同値性のチェック
assertSame(expected, actual) 同一性のチェック
assertArrayEquals(expected, actual) 配列に関して
assertNull(object) nullであるかのチェック
fail() 必ず失敗させる
例外処理

期待する例外が発生しているかどうかのテストをするには,@Testアノテーションのexpectedパラメータを使う.

// 成功例
import static org.junit.Assert.*;

import org.junit.Test;

@Test(expected=ArithmeticException.class)
public void testException() {
    int a = 10 / 0;
}
実行時間

実行時間のテストをするには,@Testアノテーションのtimeoutパラメータを使う.

// 失敗例
import static org.junit.Assert.*;

import org.junit.Test;

@Test(timeout = 1000)
public void testTimeout() {
    while (true);
}

テストスィート

複数のテストケースをまとめて実行する.

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)
@SuiteClasses({実行したいテストクラス1,実行したいテストクラス2,……})
public class AllTest {
}

カバレッジ計測

“使える”Eclipseプラグイン徹底攻略 - 第7回 単体テストを楽にするプラグイン:ITpro
djUnitをインストール
Eclipse3.4のメニュー -> ヘルプ -> ソフトウェア更新 -> サイトの追加 で下記URLを設定して,djUnitをインストールした.

http://works.dgic.co.jp/djunit/update/3.3.x/site.xml

関連

よく分かってないこと

テストに対するパラメータ指定

テストのパラメータ指定に関して,サンプルは動かせるが,いまいちよくわからない.

  • どんな仕組みなのか
  • 使い方(@RunWith(Parameterized.class) , @Parameters)