アクションのテスト

アクションの単体テストはCubbyTestCase を使用します。 SeasarのS2Unitの機能を全て使用できるので SeasarのS2Unitのドキュメント も合わせてご覧ください。

  1. CubbyTestCaseを継承して、XXXXTest作成します。
  2. テスト対象のアクションをフィールドに用意します。これはアクション実行後に結果を取得するためです。
  3. アクションのメソッドごとにテストメソッドを書きます。メソッド名はtestから始めます。
  4. テストメソッドの先頭で、パラメータのセットなど初期化処理を行います。
  5. CubbyTestCase#processAction にリクエストのパスを指定して、アクションメソッドを実行します。
  6. 戻り値をCubbyTestCase#processAction で結果のActionResultの型とパスをチェックします。パスのチェックはForwardとRedirectの場合のみ行われます。
  7. 必要に応じてアクションクラスのフィールドやリクエストやセッションの値をチェックします。
    package org.seasar.cubby.examples.other.web.hello;
    
    import org.seasar.cubby.action.ActionResult;
    import org.seasar.cubby.action.Forward;
    import org.seasar.cubby.unit.CubbyTestCase;
    
    public class HelloActionTest extends CubbyTestCase {
    
            // 対象のアクション
            private HelloAction action;
            
            // 初期化処理
        protected void setUp() throws Exception {
            // diconファイルの読み込み
            include("app.dicon");
        }
        
            public void testIndex() throws Exception {
                    // アクションの実行
                    ActionResult result = processAction("/hello/");
                    // 結果のチェック
                    assertPathEquals(Forward.class, "input.jsp", result);
            }
            
            public void testMessage() throws Exception {
                // リクエストパラメータのセット
                    getRequest().addParameter("name", "name1");
                    // アクションの実行
                    ActionResult result = processAction("/hello/message");
                    // 結果のチェック
                    assertPathEquals(Forward.class, "result.jsp", result);
                    // 実行後のアクションの状態を確認
                    assertEquals("name1", action.name);
            }       
    }