Top / Java / Cactus

Cactusとは

CactusとはJ2EEのモジュールのUnitテストを行うためのフレームワークです。 JUnitのクラスを拡張して、コンテナ上でテストを行うためのクラス群を提供します。

具体的には、requestパラメータにいろいろな値をセットしてブラウザのリクエストをシミュレーションすることや、ブラウザへ返却される画面に正しく値がセットされてるかをチェックするクラスなどを提供してくれます。

またCactusで対象としているモジュールははServlet,JSP,Filter などです。

ダウンロード

ここよりダウンロード可能です。 ダウンロードして、サンプルコーディングを作りながら試してみました。

サンプルの説明

今回はサーブレットとフィルタとJSPを使ったモジュールのテストをしようと思います。

01.png

テストのサーブレット(kino.servlet.SampleServlet?)はユーザ入力値を連結して表示するだけの単純なモノです。連結処理を行いJSP(/WEB-INF/index.jsp)に処理を転送します。 フィルタ(kino.filter.RequestEncodingFilter?)はrequest.setCharacterEncoding?()を実行するフィルタです。

サンプルの一部

Cactusでテストを行うための準備

jarファイルの配置

WEB-INF/lib ディレクトリに

junit-3.8.1.jar
aspectjrt-1.1.1.jar
cactus-1.6.1.jar
commons-httpclient-2.0.jar
commons-logging-1.0.3.jar

を配置しておきます。

cactus.propertiesの配置

次にクラスパスが通っているディレクトリにcactus.propertiesをおいておきます。 このファイルに記述する内容は

cactus.contextURL=http://localhost:9080/CactusTest

のみでOKです(テスト対象のURL)。

jspRedirector.jspの配置

jspRedirector.jspをルート直下に配置します。

最終的にディレクトリ構成は以下のようになりました。

03.png

web.xmlの編集

Cactusはテスト対象のプログラムを直接呼び出すのではなく、プロクシ(リダイレクタとかいう)を介して

クライアント(テストクラス) -> リダイレクタ -> テストクラス -> テスト対象クラス

という方式でテストを行います。というわけでweb.xmlにリダイレクタとなるサーブレットやフィルタ、JSPなどを登録する必要があります。 登録する内容は

<filter>
  <filter-name>FilterTestRedirector</filter-name>
  <filter-class>org.apache.cactus.server.FilterTestRedirector</filter-class>
</filter>
<filter-mapping>
  <filter-name>FilterTestRedirector</filter-name>
  <url-pattern>/FilterRedirector</url-pattern>
</filter-mapping>
<servlet>
  <servlet-name>ServletTestRedirector</servlet-name>
  <servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>
</servlet>
<servlet>
  <servlet-name>jspRedirector</servlet-name>
  <jsp-file>/jspRedirector.jsp</jsp-file>
</servlet>
<servlet-mapping>
  <servlet-name>ServletTestRedirector</servlet-name>
  <url-pattern>/ServletRedirector</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>jspRedirector</servlet-name>
  <url-pattern>/JspRedirector</url-pattern>
</servlet-mapping>

などです。

以上で準備は完了です。

ようやくテストクラスの記述

ようやくテストクラスを記述します。

TIPS

リクエストURLを偽造する。

webRequest.setURL("localhost:8080","/[context]","/[ServletName]",null,null);

この記事は

選択肢 投票
おもしろかった 2  
そうでもない 0  

Top / Java / Cactus

現在のアクセス:25891


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS