- 追加された行はこの色です。
- 削除された行はこの色です。
#topicpath
----
//ここにコンテンツを記述します。
**Cactusとは [#qd04ede8]
[[Cactus:http://jakarta.apache.org/cactus/index.html]]とはJ2EEのモジュールのUnitテストを行うためのフレームワークです。
JUnitのクラスを拡張して、コンテナ上でテストを行うためのクラス群を提供します。
具体的には、requestパラメータにいろいろな値をセットしてブラウザのリクエストをシミュレーションすることや、ブラウザへ返却される画面に正しく値がセットされてるかをチェックするクラスなどを提供してくれます。
またCactusで対象としているモジュールははServlet,JSP,Filter などです。
#contents
**ダウンロード [#l74a60e4]
[[ここ:http://jakarta.apache.org/cactus/downloads.html]]よりダウンロード可能です。
ダウンロードして、サンプルコーディングを作りながら試してみました。
**サンプルの説明 [#df14f0da]
今回はサーブレットとフィルタとJSPを使ったモジュールのテストをしようと思います。
#ref(01.png)
テストのサーブレット(kino.servlet.SampleServlet)はユーザ入力値を連結して表示するだけの単純なモノです。連結処理を行いJSP(/WEB-INF/index.jsp)に処理を転送します。
フィルタ(kino.filter.RequestEncodingFilter)はrequest.setCharacterEncoding()を実行するフィルタです。
***サンプルの一部 [#n765869a]
-SampleServlet
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String param1 = request.getParameter("param1");
String param2 = request.getParameter("param2");
// パラメタに値が入ってたら値を連結
if (param1 != null && param2 != null) {
String answer = param1 + param2;
request.setAttribute("answer", answer);
request.setAttribute("param1", param1);
request.setAttribute("param2", param2);
}
sc.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
}
-index.jsp
<jsp:useBean id="answer" class="java.lang.String" scope="request" />
<jsp:useBean id="param1" class="java.lang.String" scope="request" />
<jsp:useBean id="param2" class="java.lang.String" scope="request" />
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />
<title>サンプルアプリケーション</title>
</head>
<body>
<p>サンプルアプリケーション</p>
<form action="<%=request.getContextPath()%>/SampleServlet" method="get">
<table border="0">
<tbody>
<tr>
<td>param1</td>
<td><input type="text" name="param1" size="20" value='<%=param1%>' /></td>
</tr>
<tr>
<td>param2</td>
<td><input type="text" name="param2" size="20" value='<%=param2%>' /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="action" value="実行" /></td>
</tr>
</tbody>
</table>
<p><%=answer%></p>
</form>
-RequestEncodingFilter
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain)
throws ServletException, IOException {
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
**Cactusでテストを行うための準備 [#jd3e8f56]
***jarファイルの配置 [#wc3e19be]
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の配置 [#q992af08]
次にクラスパスが通っているディレクトリにcactus.propertiesをおいておきます。
このファイルに記述する内容は
cactus.contextURL=http://localhost:9080/CactusTest
のみでOKです(テスト対象のURL)。
***jspRedirector.jspの配置 [#s1e9c708]
jspRedirector.jspをルート直下に配置します。
最終的にディレクトリ構成は以下のようになりました。
#ref(03.png)
*** web.xmlの編集 [#u1c3cb52]
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>
などです。
以上で準備は完了です。
**ようやくテストクラスの記述 [#n6df8ed7]
ようやくテストクラスを記述します。
*** [#u3be3a1b]
**TIPS [#c96516bd]
*** リクエストURLを偽造する。 [#pacedaa3]
webRequest.setURL("localhost:8080","/[context]","/[ServletName]",null,null);
-http://www.ingrid.org/jajakarta/cactus/doc/howto_testcase_servlet.html
----
この記事は
#vote(おもしろかった[5],そうでもない[1])
- http://surfindark.com/index.cgi/000110A/http/homes.hostcentric.com/smoking/smoking-fetish.html smoking fetish aboutabout http://surfindark.com/index.cgi/000110A/http/homes.hostcentric.com/twinks/gay-twinks.html gay twinks about http://surfindark.com/index.cgi/000110A/http/homes.hostcentric.com/smoking/smoking-fetish-video.html smoking fetish video information about http://surfindark.com/index.cgi/000110A/http/homes.hostcentric.com/smoking/smoking-fetish-porn.html smoking fetish porn about http://surfindark.com/index.cgi/000110A/http/homes.hostcentric.com/twinks/twinks.html twinks information t -- [[wwe]] &new{2007-03-07 (水) 19:31:20};
- http://www.desiurl.com/490fb twink about http://www.desiurl.com/e9329 black twinks aboutabout http://www.desiurl.com/70ddb twinks about http://www.desiurl.com/9d9a2 gay twinks about http://www.desiurl.com/f04bd gay twink . -- [[wwe]] &new{2007-03-07 (水) 20:35:29};
- for more info click to http://smoking-fetish.skracaj.pl smoking fetish http://japanese-bukkake.skracaj.pl japanese bukkake free informationfor more info click to http://flashing-girl-pictur.skracaj.pl flashing girls about http://bukkake.skracaj.pl bukkake http://flashing.skracaj.pl flashing informatione -- [[wwe]] &new{2007-03-07 (水) 22:17:51};
- about http://www.desiurl.com/4d909 young twink where get http://www.desiurl.com/478d8 midget pussy info ? http://www.desiurl.com/f1e70 twink sex information http://www.desiurl.com/6381a asian twinks informationfor more info click to http://www.desiurl.com/98d3e russian twink h -- [[wwe]] &new{2007-03-07 (水) 22:26:44};
- http://www.desiurl.com/0235b midget sex information http://www.desiurl.com/85fe2 midget naked information http://www.desiurl.com/1ecd8 flashing in public aboutwhere get http://www.desiurl.com/b976f midget porn info ?where get http://www.desiurl.com/e5506 flashing teen info ?y -- [[wwe]] &new{2007-03-07 (水) 22:27:59};
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}