前回はDJUnitを使った単体試験を紹介しましたが、今回はWEBアプリケーションでよく使われるStrutsのアクションクラスのテストを楽に行うライブラリを紹介いたします。
StrutsTestCaseを利用することによってアクション単位にテストすることが可能でブラウザを開かなくても試験ができます。今まではアクションの試験は実際にブラウザを動かす必要があったため面倒なものでした。さらに画面から入力される情報をプログラム上で作成するので未入力でボタンを押したなどのバリデートのテストも同時行えます。
StrutsTestCase for JUnit
http://sourceforge.net/project/showfiles.php?group_id=39190
cactus(今回はStrutsTestCaseの中にあるjarを使いますので落とさなくても良いです)
http://jakarta.apache.org/cactus/downloads.html
【環境・バージョン情報】
OS:WindowsXP SP3
Eclipse:3.3.2
JDK:JDK1.5.0
StrutsTestCase:strutstest214-1.2_2.4.zip
Tomcat:6.0.16
struts:1.2
すでにhttp://localhost:8080/sampleでログイン処理後(セッションにユーザID格納)、一覧ページを開くような処理が実装されているとします。
StrutsTestCase for JUnitのページからダウンロードしたstrutstest214-1.2_2.4.zipのexamples\test.warに入っているjarの中身を利用します。
【新たに追加したLIB】
aspectjrt-1.2.1.jar
cactus-13-1.7.jar
commons-collections.jar
commons-httpclient-2.0.jar
junit-4.0.jar
strutstest-2.1.4.jar
WEB.xmlに記述を追加します。
【WEB.xmlの追加】
<!-- Cactus Servlet Redirector configuration -->
<servlet>
<servlet-name>ServletRedirector</servlet-name>
<servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>
</servlet>
<!-- Cactus Servlet Redirector URL mapping -->
<servlet-mapping>
<servlet-name>ServletRedirector</servlet-name>
<url-pattern>/ServletRedirector</url-pattern>
</servlet-mapping>
以下のように記述したcactus.propertiesをsrc直下に置きコンパイルすればclassesにコピーされます。
【cactus.propertiesの中身】
cactus.contextURL = http://localhost:8080/sample
cactus.servletRedirectorName = ServletRedirector
cactus.enableLogging=true
そこで以下のようなテストプログラムを作成して、Tomcatプラグインを起動しつつ、JUnitで実行してみると
と無事にJUnitが完了できました。
setUpメソッドにログイン処理を書くことができることによって、ログインした状態で各ページのテストを実行することが可能です。これはわざわざブラウザでログインしないでテストできるので、シナリオを作ってテストするようなツールで実行するより早くテストが実行できるかもしれません。
最終的にはJSPも含めたブラウザからのテストをしないといけないのですが、アクションのテスト結果も出せなどと言われた場合や、余裕があるプロジェクトでは利用する価値はあるのではないでしょうか。