S2i18n

元文

S2StrutsUnitの概要

S2StrutsUnitは、以下の特徴を持っています。

ServletAPIを利用したUnitTest機能
S2Unitと同様にServlerAPIのモックオブジェクトを利用してのテストが可能です。 S2Unitとの違いは、ServletAPIからの戻り値をあらかじめ、コンポーネント定義ファイルに記述しておく事が可能な点です。
StrutsのActionのサブクラスをテストする機能
Actionクラスをテストする事が、簡単に出来るようになります。 Requestなどの値を参照する場合、ActionFormを参照する場合、MappingDispatchActionをテストする場合、 リクエストのパスでテストする場合、それぞれで、必要なパラメータをメソッドの引数に渡すのみで、テスト可能となっています。

S2StrutsUnitリファレンス

S2StrutsUnitを使ったテストクラスの作成方法

テストクラスは、org.seasar.struts.unit.S2StrutsTestCaseを継承して作成します。 またS2StrutsTestCaseはS2TestCaseを拡張したクラスなので、 テストメソッド等の使用方法はS2TestCaseやJUnitと同様です。

S2StrutsUnitの機能

S2Strutsを使った開発のテストを簡単に行えるように以下の機能があります。

Actionを指定してのActionの実行
Actionクラスの実行を行う場合、ActionのインスタンスをS2StrutsTestCase#execute(Action)の引数に渡すのみで、 サービスなどがインジェクションされたActionクラスを実行可能です。 また、Actionクラスのインスタンスを生成せずに同様の動作をするS2StrutsTestCase#execute(Class)というメソッドもあります。 実行した結果の戻り値は、Actionを実行した場合に返されるActionMappingのfoword名となります。
ActionとActionFormを指定してのActionの実行
Actionクラスの実行を行う場合、ActionとActionFormのインスタンスをS2StrutsTestCase#execute(Action,ActionForm)の引数に渡すのみで、 サービスなどがインジェクションされたActionクラスを実行可能です。 また、Actionクラスのインスタンスを生成せずに同様の動作をするS2StrutsTestCase#execute(Class,ActionForm)というメソッドもあります。 実行した結果の戻り値は、Actionを実行した場合に返されるActionMappingのfoword名となります。
MappingDispatchActionの実行
MappingDispatchActionクラスの実行を行う場合、ActionとActionFormのインスタンスとメソッド名をS2StrutsTestCase#execute(Action,ActionForm,String)の引数に渡すのみで、 サービスなどがインジェクションされたActionクラスを実行可能です。また、ActionFormを使用しない場合に対応した、S2StrutsTestCase#execute(Action,String)というメソッドが用意されています。 また、Actionクラスのインスタンスを生成せずに同様の動作をするS2StrutsTestCase#execute(Class,ActionForm,String)というメソッドもあります。また、S2StrutsTestCase#execute(Class,String)というメソッドが用意されています。 実行した結果の戻り値は、Actionを実行した場合に返されるActionMappingのfoword名となります。
パスを指定しての実行
パスを指定して、Actionの実行を行う場合、パスをS2StrutsTestCase#execute(String)の引数に渡すのみで、パスに対応したActionが生成され、 サービスなどがインジェクションされたActionクラスを実行可能です。 実行した結果の戻り値は、Actionを実行した場合に返されるActionMappingのfoword名となります。 パスを指定して実行を行う場合、下記の、コンテキストの読み込みを行う必要があります。
コンテキストの読み込み
パスを指定して、web.xmlや、そこに記述されている、struts-config.xmlなどの読み込みが可能です。 読み込みに使用するメソッドは、setDocBase(String)です。引数で指定したパスの直下に、WEB-INFディレクトリが存在する必要があります。 引数のパスは、リソースから検索します。また、S2TestCase#include(String)と同様に、フルパスとテストクラスからの相対パスの両方が指定可能です。

Example

基本的なActionクラスのテスト

ActionFormを使用したActionクラスのテスト

public class FormTestActionTest extends S2StrutsTestCase {

    ...

    public void testGetValueFromForm() throws Exception {
        TestActionForm form = new TestActionForm();
        form.setVal("foo");

        String actual = execute(FormTestAction.class, form);

        assertEquals("foo", actual);
    }
}

MappingDispatchActionクラスのテスト

public class MappingDispatchActionTest extends S2StrutsTestCase {

    ...

    public void testFooMethod() throws Exception {
        String actual = execute(DispatchTestAction.class, "foo");
        assertEquals("success", actual);
    }
}

コンテキストを読み込んでのテスト

public class LoadWebContextTest extends S2StrutsTestCase {

    ....

    protected void setUp() {
        ...
        setDocBase("org/seasar/struts/unit");
    }

    public void testExecuteString() throws Exception {
        String actual = execute("/login?id=id&pass=pass");

        assertEquals("success", actual);
        assertEquals(LoginAction.class, getExecutedAction().getClass());
        assertNull(getExecutedActionForm());
    }
}

英文

Overview of S2StrutsUnit

S2StrutsUnit has the following features.

Unit testing using ServletAPI
Testing subclass of Struts Action

S2StrutsUnit reference

How to write test class using S2StrutsUnit



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-03-31 (木) 00:00:00