テストクラスを作る
先ほど作成したActionクラスに対してテストクラスを記述してみます。今回はパラメータnameの有無のみで遷移先が変わるという非常に単純なActionクラスなので、テストケースも以下の2つとします。
- (1)nameの値を設定しない場合
- (2)nameに値を設定する場合
では、テストクラスは以下のようになります。
public class ActionCaseTest extends StrutsSpringTestCase {
/**
* テストケース(1)
*/
public void testSendFailureAction() throws Exception {
// 指定したURLのActionクラスを起動し、その戻り遷移先(result)を取得する
ActionProxy proxy = getActionProxy("/model/send");
String result = proxy.execute();
// 特にリクエストパラメータを生成することなく実行する
// その場合はmodel/send.actionは遷移先としてfalureを実行
// resultの値がfailureに等しいかを判定
assertEquals("failure", result);
}
/**
* テストケース(2) リクエストパラメータに値を設定
*/
public void testSendSuccessAction() throws Exception {
// リクエストパラメータにnameを追加
request.addParameter("name", "名前A");
// 指定したURLのActionクラスを実行する、その戻り遷移先(result)を取得する
ActionProxy proxy = getActionProxy("/model/send");
String result = proxy.execute();
// resultの値がfailureに等しいかを判定
assertEquals("success", result);
}
}
テストケースは以上の2つとなります。2番目のtestSendSuccessActionメソッド内で、リクエストパラメータを追加してから、テスト対象のActionクラスを呼び出しています。親クラスのメンバ変数requestが仮想のリクエスト属性になっており、JUnitプラグインを使うActionクラスでは自動的に利用できます。requestが利用できますので、HTTPセッションの取得も、request.getSession()で行えます。
なお、JUnitプラグインを使ってテストクラスを作るには、JUnitのルールに加えて次の決まりごとがあります。
- StrutsTestCaseまたはStrutsSpringTestCaseを継承する
どちらの親クラスも大差はありませんが、テスト対象のActionクラスがSpringプラグインを使ったものの場合、自動的にSpring Frameworkを使ったActionクラスの管理をしてくれ、リクエストパラメータの追加などが非常に簡単になるのでStrutsSpringTestCaseが良いでしょう。
では次に実際にJUnitを動作させた結果を見てみましょう。以下の画面は開発環境(IDE)の一つであるEclipseからJUnitを実行した結果になります。
まずは対象のクラスをJUnitで動作させます。
実行結果が次のようになります。すべての試験が想定された結果どおりであれば、緑色のチェックがつけられて緑色のゲージが出力されればすべての試験が無事行われて、エラーがなかったことが示されます。
このようにActionクラスの試験が非常に簡単にできるのが魅力で、Actionクラスが返すResultの結果をチェックすれば確認できるようになります。


