|
JSFTestCasehttp://works.dgic.co.jp/djwiki/Viewpage.do?pid=@4A53465465737443617365Encoding:UTF-8 / Locale:en_US / PageStatus: Frozen Owner of this page:kataoka |
JSF TestCaseStrutsを使用して作成されたWebアプリケーションをテストするとき、StrutsTestCaseを利用することが結構あります。 APサーバなしで、Actionオブジェクトをサクサク起動できるのは、大変便利です。 また、画面遷移先の確認などをすることで、ある程度、struts-config.xmlの検証にもなると思います。 JSFフレームワークでも、StrutsTestCaseみたいにビジネスロジックを起動、検証できたら便利だと思います。 調べてみると、 「JSFUnit」[https://jsftest.dev.java.net/] というプロジェクトがありましたが、まだ、なにもコミットされていません。 このプロジェクトが、いいものを作ってくれるのではと期待しています。 といっても、そのリリースを待っている訳にもいかない状況になりましたので、 JSF TestCaseを作成しました。 ここでは、簡単なサンプルと共に、バイナリを公開したいと思います。 機能的には、我々が必要最低限のものしかありませんし、現時点では、JSFフレームワークの解析不足のため、他の環境では動作しない可能性がありますので、ご了承ください。 動作確認をした環境 Λ
Download Λこちらからダウンロードお願いします。 一般的なサンプルテストコード Λ申し訳ありませんが、以下は、StrutsTestCaseの知識を前提とします。 最初に、一般的だと思われるサンプルテストコードを示します。
「WEB-INF」フォルダの親フォルダを指定します。 上記サンプルでは、d:/test/WEB-INFのようなフォルダ構成のときの例です。 そして、faces-config.xmlファイルが、d:/test/WEB-INF/faces-config.xmlの位置に存在する必要があります。
faces-config.xmlに指定されている[navigation-rule]の[from-view-id]を設定します。 このナビゲーションルールに従って検証することを示します。
検証の対象ビジネスロジックの指定です。 jspには、[commandButton type="submit" value="ボタン" action="#{sample.doSomething}"]のようなサブミットボタンのタグがあるはずです。 このボタンが押下されたときのロジックを検証することを示します。 つまり、マネージドビーンsampleのdoSomethingメソッドを実行するよう指定しています。
リクエストパラメータを設定します。 jspには、inputText、inputSecretなどのタグがあるはずです。 上記サンプルは、[inputText id="keyword" value="#{sample.keyword}"]のように定義された入力項目の入力値["12345"]を設定しています。 入力値は、マネージドビーンであるsampleのkeywordメンバにバインドされます。
設定されたアクションを実行します。
to-view-idを検証し、意図したとおりの遷移先になっているかを検証します。 setFromViewIdで指定したナビゲーションルールに従って検証されます。
エラーメッセージがないことを検証します。
マネージドビーンの状態を検証するため、マネージドビーンのインスタンスを取得します。 サンプルに登場しなかったメソッド Λサンプルでは使用されていませんが、他にもメソッドがあります。
マネージドビーンをセットします。 あらかじめマネージドビーンをセットしておきたいときに使用します。 actionPerform()の呼び出しより前に、このメソッドを使用してください。 [例] ActionListener Λサンプルは、デフォルトのActionListenerを使った例なのですが、他にも、別のActionListenerを使用したり、複数のActionListenerを使用したりする場合があるはずです。 下記メソッドは、そのようなときに使用するメソッドです。 現在、これらActionListenerに関する部分は、評価不十分です。
<h:commandButton id="buttonId"/>のような記述のとき このメソッドで、"buttonId"という文字列をセットしておきます。 setCommandId("buttonId"); ActionEvent#getComponent().getId()で、この文字列を取得することができます。
<h:commandButton value="Add"/>のような記述のとき このメソッドで、"Add"という文字列をセットしておきます。 setCommandValue("Add"); ((UICommand) ActionEvent#getComponent()).getValue()で、この文字列を取得することができます。
<h:commandButton actionListener="#{sample.process}"/>のような記述のとき このメソッドで、ActionListenerを指定します。 setActionListener("#{sample.process}"); マネージドビーンsampleの、processメソッドは、javax.faces.event.ActionEventタイプの引数をとる必要があります。
<h:commandButton/> <f:actionListener type="jp.co.dgic.listener.SampleActionListener"/> のように、ネストしたActionListenerがあるときに、このメソッドで、指定します。 addActionListener("jp.co.dgic.listener.SampleActionListener"); jp.co.dgic.listener.SampleActionListenerクラスは、 javax.faces.event.ActionListenerを実装している必要があります。 リクエストパラメータの属性 Λリクエストパラメータに対する属性も、多少指定できます。 現在、これらリクエストパラメータの属性に関する部分は、評価不十分です。
指定したIDのリクエストパラメータに「必須」属性をつけます。 addRequestParameter("keyword", "12345", "#{sample.keyword}"); 事前に、addRequestParameterが実行されている必要があります。
指定したIDのリクエストパラメータに、LengthValidatorを追加します。 addRequestParameter("keyword", "12345", "#{sample.keyword}"); 事前に、addRequestParameterが実行されている必要があります。
指定したIDのリクエストパラメータに、Validatorを追加します。 addRequestParameter("keyword", "12345", "#{sample.keyword}"); 事前に、addRequestParameterが実行されている必要があります。 TestValidatorクラスは、javax.faces.validator.Validatorを実装している必要があります。 メッセージ検証 Λvalidatorなどを設定すると、メッセージの検証も必要です。 現在、これらメッセージに関する部分は、評価不十分です。
エラーメッセージがないことを検証します。 verifyNoFacesMessages(); 引数にパラメータIDを指定すると、指定したパラメータのエラーメッセージが、ないことを検証します。 パラメータID省略のときは、全体で、エラーメッセージが、ひとつもないことを検証します。
指定したパラメータのエラーメッセージが、指定のものであることを検証します。 String[] messages = new String[] {"...", "..."}; 連絡方法 Λ問題、その他ありましたら、下記に連絡お願いします。 developer@dgic.co.jp |
|||||||