6. JSPのテスト
Cactus 6章 JSPのテスト
本章では、Cactusを使用してJSPのテストを行う方法について、説明します。 6.1. JspRedirectorの設定JSPのテストを行うためには、JspRedirecterを設定する必要があります。まず、「2.Cactusの構造」を参考に、クラスパスの設定を行ってください。次に、JspRedirectorをサーバ側に配置します。JspRedirectorはjspRedirector.jspという名前のJSPファイルで、Cactus配布パッケージのWebディレクトリの下にあります。このJSPファイルを、Cactus実行環境よりアクセス可能な場所に配置します。仮に"/jsp/jspRedirector.jsp"でアクセスできるとします。最後に、クライアント側のcactus.properties設定ファイルの編集を行います。 cactus.JspRedirectorName = /jsp/jspRedirector.jsp "="の後ろには、JspRedirectorのURLパターンを記述します。これで設定完了です。 ※Cactus のバージョン1.3以前のjspRedirector.jspにはバグがあります。session暗黙オブジェクトが正常に動作しません。jspRedirector.jspのディレクティブの「session="false"」の記述を「session="true"」に変更してください。 6.2. JspTestCaseJSPのテストクラスはJspTestCaseを拡張して作成します。 1:import org.apache.cactus.*; JspTestCaseはServletTestCaseを拡張したクラスです。よって、request、response等の暗黙オブジェクト、begin、endメソッドの役割などは、ServletTestCaseの場合と同様に機能します。「セッションを設定してテストを行う」等も、全く同じ方法で実行可能です。 サーブレットのテストとJSPのテストで異なる点は、「テスト対象のサーブレット、JSPの指定方法」です。ServletTestCaseでは、testメソッド内でサーブレットのインスタンスを作成しメソッドを実行することによって、テスト対象のサーブレットを特定していました。それでは、JSPではどのようにテスト対象のページを指定すればよいのでしょうか。JspTestCaseでは、ServletTestCaseの暗黙オブジェクトに加えて、pageContext暗黙オブジェクトが用意されています。これは、org.apache.cactus.server.PageContextWrapperのインスタンスで、JSPのpageContext暗黙オブジェクトを仮想的に表すクラスになります。JSPのテストを行う場合は、pageContext暗黙オブジェクトのincludeメソッドで、テスト対象のJSPを読み込みます。あとは、サーブレットのテストの時と同様に、testメソッドやendメソッド内でassertメソッドを使用して、結果の評価を行います。 (実習課題1)JSP 6.カスタムタグの基本2の実習課題3のテストクラスを作成しなさい。 6.3. カスタムタグのテストカスタムタグはハンドラークラスとTLDからなります。よって、テストもこの2つの観点から行わなくてはいけません。例えば、以下のようなカスタムタグを作成したいとします。 1: <%@ page contentType="text/html; charset=EUC-JP" %> 2: <%@ taglib uri="http://www.techscore.com/tags/example" prefix="example" %> 3: <html> 4: <head><title>Hello World</title></head> 5: <body> 6: <example:ShowMessage msg="Hello World" /> 7: </body> 8: </html> このShowMessageタグは、属性msgに指定された文字列を表示する単純なタグです。ハンドラークラスはShowMessageTagです。このタグのテストは、以下の2つの場合が考えられます。
ハンドラクラスはロジックを実行する部分ですから、そのテストは「タグが要求された機能仕様を満たしているか」確認する部分です。対して、カスタムタグの要素名、属性名が正確にTLDに設定されているかも、評価する必要があります。 |
![]()
![]()
|