S-JIS[2004-03-26]

Eclipse2でJUnit

テスト支援ツール(?)のJUnitが eclipseには標準で入っている。

mainメソッドが入った(すなわちドライバの役割をする)クラスを作っておき、
その中からテストしたいメソッドを呼び出す。
呼び出した結果が正常かどうかを判定し、失敗なら例外を発生させるメソッドがJUnitに用意されている。

@ITに詳しく出ています。


junit.jarの追加

事前準備として、junit.jarをプロジェクトのビルド・パスに追加しておく必要がある。

  1. 「パッケージ・エクスプローラー」内で、設定したいプロジェクトを選択
  2. メニューバーの「プロジェクト(P)」→「プロパティ(P)」で「●●のプロパティー」ダイアログが開く。●●プロジェクトの名前
  3. 左側のペインの「Java のビルド・パス」を選択
  4. 右側のペインの「ライブラリー(L)」タブを選択
  5. 「外部 JAR の追加(X)」ボタンをクリック
  6. 「JAR 選択」ダイアログが開くので、JUnit.jarの場所を指定して「開く(O)」ボタンをクリック。
    ちなみに僕の場合は「C:\eclipse\plugins\org.junit_3.8.1\junit.jar」でした。
  7. (「●●のプロパティー」ダイアログに戻り、)「OK」ボタンをクリック

テスト実行クラスの生成

  1. 「パッケージ・エクスプローラー」内で、テスト対象のクラスを選んで右クリックでメニューを開く。
  2. 「新規(W)」→「その他(O)」で「新規」ダイアログを開く。
  3. 左側のペインから「Java」→「JUnit」を選択
  4. 右側のペインから「TestCase」を選択
  5. 「次へ」ボタンをクリックすると、TestCaseの設定場面に変わる。
    ここで「JUnitがプロジェクトのビルド・パスにありません。junit.jar をプロジェクトのビルド・パスに追加してください。」が出たら、junit.jarをビルドパスに加える必要がある。
  6. 「ソース・フォルダー(D)」には、現在とは別のディレクトリを指定する。同じディレクトリのままでもいいけど、普通は違うところに変えるらしい。
    「パッケージ(K)」は同じでいい。
    一番下の「メソッド・スタブ」は、4つ全てにチェックを入れておく
  7. 「次へ」ボタンをクリックすると、テスト・メソッドを選択する場面に変わる。
  8. テストしたいメソッドにチェックを入れる。
    一番下の「最終メソッド・スタブを作成(F)」「生成されたテスト・メソッドのタスクを作成(T)」はチェックを入れなくてよい
  9. 「終了」ボタンをクリックすると、テストクラスが作られる。

テスト実装

作られたクラスのsetUp()でテスト前の初期化を行い、test●●()の中でテスト対象メソッドを呼び出し、その結果をテスト結果判定用メソッドに渡すよう実装する。
テスト結果判定用メソッドは、テスト成功の場合は正常に終了し、テスト失敗の場合は例外を発生させる。

テスト結果判定用メソッド
メソッド 説明 備考
assertEquals(型 expected, 型 actual) expectedとactualが等しい場合、テスト成功 「型」は、boolean・byte・char・short・int・long
assertEquals(Object expected, Object actual) expectedとactualが等しい(equals()を使用している模様)場合、テスト成功  
assertEquals(double expected, double actual, double delta) expectedとactualの差がdeltaより小さい場合、テスト成功(浮動小数の場合、ぴったり一致するという判定は非常に怪しいからdeltaというものがあるのだろう) float版もある
assertNotNull(Object obj) objがnull以外の場合、テスト成功  
assertNull(Object obj) objがnullの場合、テスト成功  
assertSame(Object expected, Object actual) expected==actualの場合、テスト成功  
assertNotSame(Object expected, Object actual) expected!=actualの場合、テスト成功  
assertTrue(boolean cond) condがtrueの場合、テスト成功  
assertFalse(boolean cond) condがfalseの場合、テスト成功  
fail() 常にテスト失敗  

上記のメソッドには、第1引数に「String message」を持つメソッドも用意されている。
これは、テスト失敗の場合に「障害トレース」に指定したメッセージが表示されるもの。


テスト実行

  1. 「パッケージ・エクスプローラー」内でテスト実行クラスを選択
  2. メニューバーの「実行(R)」→「実行(N)」で「実行」ダイアログを開く。
  3. 左側の「構成(F)」ペインの中の「JUnit」を選択して右クリック
  4. メニューから「新規(W)」を選択すると、パッケージエクスプローラーで選んでいたクラスが追加される。
  5. 「実行」ボタンをクリック

「パッケージ・エクスプローラー」ビューの下方に「JUnit」という選択肢が表示されるので、それをクリックするとテスト実行結果が見られる。

上部の「実行: 1/1」は、実行したtest●●()の個数を表している。(実行したassert●●()の個数ではない)
assert●●()でテスト失敗だった場合、「失敗」に件数が表示される。
それ以外で例えば例外が発生した場合は「エラー」に件数が表示される。

テスト成功の場合はあっけないほど何も表示されないので、「エラー」と「失敗」が共に0であることを確認する。

テスト失敗の場合、「JUnit」ビューの下方の「障害トレース」ペインにスタックトレースが表示される。
message引数付きのassertを使っていた場合、そのメッセージも「障害トレース」ペイン最上部に「junit.framework.AssertionFaileError: message」という形で表示される。
ここで表示されている(上から2行目の)テスト実行クラスの行をダブルクリックすると、その失敗が起きたソースへ移動できる。


テスト再実行

  1. 「パッケージ・エクスプローラー」内でテスト実行クラスを選択
  2. メニューバーの「実行(R)」→「実行(N)」で「実行」ダイアログを開く。
  3. 左側の「構成(F)」ペインの中の「JUnit」→テスト実行クラス名を選択
  4. 「実行」ボタンをクリック

または、「JUnit」ビューを開いて上部のをクリックすることでも再実行できる。


Eclipse3へ行く / Eclipse-Javaのページへ戻る / 技術メモへ戻る
メールの送信先:ひしだま