[Seasar-user:19136] Re: [S2JUnit4+S2JDBC]batch.Taskクラスのトランザクションのテストを行うには?

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2010年 1月 15日 (金) 19:23:12 JST


中村(taedium)です。

> のようにすると、
> DEBUG 2010-01-15 16:10:51,799 [main]
> トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1263539444252/1,
> BranchId=]
> とのメッセージが出ます。
> が、実際にはinsertされていません。

S2JUnit4がコンテナを作成しトランザクションを制御するので
テストコードの中で別のコンテナを作成してはいけません。
S2JUnit4で生成されるコンテナからHogeTaskのコンポーネントを
取得してください。
フィールドに宣言しておくと、型もしくは名前で自動的に
バインディングされます。

@RunWith(Seasar2.class)
public class HogeTest {

    private HogeTask hogeTask;

    @TxBehavior(TxBehaviorType.COMMIT)
    public void testExecuteBatch() throws Exception {
        TaskController tc = new TaskController();
        tc.setTask(hogeTask);
        int result = tc.execute();
    }
}

> というより、HogeEntityServiceクラスの実際のinsertHogeの中に、
> パラメータを表示するログを入れているのですが、全く表示されません。
> それで実際に値を入れてみたいと思ったわけです。

実は呼び出されていないということはないですか?
デバッグでステップ実行してみるとどうでしょう。

それと、気になったのですが、
taskCustomizerを作成していますが、
taskCreatorも作成しているでしょうか?

-- 
Nakamura Toshihiro <[E-MAIL ADDRESS DELETED]>



Seasar-user メーリングリストの案内