Cactusとは †CactusとはJ2EEのモジュールのUnitテストを行うためのフレームワークです。 JUnitのクラスを拡張して、コンテナ上でテストを行うためのクラス群を提供します。 具体的には、requestパラメータにいろいろな値をセットしてブラウザのリクエストをシミュレーションすることや、ブラウザへ返却される画面に正しく値がセットされてるかをチェックするクラスなどを提供してくれます。 またCactusで対象としているモジュールははServlet,JSP,Filter などです。 ダウンロード †ここよりダウンロード可能です。 ダウンロードして、サンプルコーディングを作りながら試してみました。 サンプルの説明 †今回はサーブレットとフィルタとJSPを使ったモジュールのテストをしようと思います。 テストのサーブレット(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をルート直下に配置します。 最終的にディレクトリ構成は以下のようになりました。 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); この記事は 現在のアクセス:26103 |