連載
» 2009年07月10日 00時00分 公開

Webアプリの常識をJSPとStrutsで身につける(10):JUnitとEclipseを使って学ぶ、“テスト”の常識 (3/4)

[中粼直樹,株式会社メセナ・ネットコム]

EclipseからJUnitのテストクラスを作るには

 まず、Eclipseを起動して、[パッケージ・エクスプローラー]で「JUnitAction.java」を右クリックし、[新規]→[JUnit テスト・ケース]を選択します。

図1 [JUnit テスト・ケース]を選択 図1 [JUnit テスト・ケース]を選択

 [新規 JUnit テスト・ケース]ダイアログが表示されるので、[完了]ボタンを押してください。

図2 [新規 JUnit テスト・ケース]ダイアログ 図2 [新規 JUnit テスト・ケース]ダイアログ

 ポップアップ画面で、JUnit 3がビルドパスに存在しないと表示されるので、デフォルトのまま[OK]ボタンを選択します。

図3 JUnit 3がビルドパスに存在しない 図3 JUnit 3がビルドパスに存在しない

 すると、図4のような画面が表示されたかと思います。

図4 追加されたJUnit 3とテストクラス 図4 追加されたJUnit 3とテストクラス

 「JUnitAction.java」と同パッケージに、「JUnitActionTest.java」が作成されているのと、ビルドパスに「JUnit 3」が追加されているのが分かると思います。

 次に、作成された「JUnitActionTest.java」を開き、以下のように編集してください。

JUnitActionTest.java
package junit;
 
import servletunit.struts.MockStrutsTestCase;
 
public class JUnitActionTest extends MockStrutsTestCase {
 
    public JUnitActionTest(String testName) {
        super(testName);
    }
    public void setUp() throws Exception {
        super.setUp();
    }
    public void testSuccessfulLogin() {
 
        addRequestParameter("seireki_ymd","20090625");
        setRequestPathInfo("/JUnit");
        actionPerform();
        verifyForward("success");
        verifyForwardPath("/pages/JUnit_Result.jsp");
        assertEquals("2009年6月25日",getSession().getAttribute("wareki_ymd"));
        verifyNoActionErrors();
    }
}

 赤文字になっている部分(20行目の「assertEquals」)がJUnitで用意されているテスト判別のためのメソッドです。

コラム 「JUnitのテストメソッドを16個紹介」

このほかにも、JUnit 3には、下記のようなメソッドが用意されています。

表7 JUnit 3のテストメソッド一覧
メソッド 処理概要
ssertEquals(smp1, smp2) smp1、2が同じ値かどうかを判別するメソッド。違う場合は“テスト失敗”になる
assertEquals(msg, smp1, smp2) 「ssertEquals」と同様の判定を行う。値が違う場合はメッセージとしてmsgを表示
assertTrue(boolean) 引数がtrueかどうか判別するメソッド。falseの場合は“テスト失敗”になる
assertTrue(String, boolean) 「assertTrue」と同様の判定を行う。falseの場合は、メッセージとしてStringの値を表示
assertFalse(boolean) 引数がfalseかどうか判別するメソッド。trueの場合は“テスト失敗”になる
assertFalse(String, boolean) 「assertFalse」と同様の判定を行う。trueの場合はメッセージとしてStringの値を表示
assertNotNull(Object) 引数がNotNullかを判定するメソッド。Nullだった場合は“テスト失敗”になる
assertNotNull(String, Object) 「assertFalse」と同様の判定を行う。Nullだった場合はメッセージとしてStringの値を表示
assertNull(Object) 引数がNullかどうか判別。Nullではない場合は“テスト失敗”になる
assertNull(String, Object) 「assertNull」と同様の判定を行う。Nullでなかった場合は、メッセージとしてStringの値を表示
assertSame(Object1, Object2) Object1、2が同じオブジェクトを参照しているか判別するメソッド。同じオブジェクトでなかった場合は“テスト失敗”になる
assertSame(String, Object1, Object2) 「assertSame」と同様の判定を行う。同じオブジェクトでなかった場合はメッセージとしてStringの値を表示
assertNotSame(Object1, Object2) Object1、2が同じオブジェクトを参照していないか判別するメソッド。同じオブジェクトだった場合は“テスト失敗”になる
assertNotSame(String, Object1, Object2) 「assertNotSame」と同様の判定を行う。同じオブジェクトだった場合はメッセージとしてStringの値を表示
fail( ) 強制的に“テスト失敗”になる
fail(String) 「「fail」と同様の判定を行う。“テスト失敗”の際、メッセージとしてStringの値を表示

 今回は、テスト入力値が「20090625」の場合としてJUnitAction.javaの処理をテスト実行しています。

JUnitActionTest.java(15行目)
addRequestParameter("seireki_ymd","20090625");

 そして、処理を実行した戻り値と予想結果である「2009年6月25日」を比較するテストとなっています。

JUnitActionTest.java(20行目)
assertEquals("2009年6月25日",getSession().getAttribute("wareki_ymd"));

 次ページでは、いよいよテストを実行してみましょう。Strutsの<logic>タグについても解説します。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。