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

yossy [E-MAIL ADDRESS DELETED]
2010年 1月 16日 (土) 12:16:25 JST


中村(taedium)様

お世話になっております。
解凍ありがとうございました。yossyです。

10/01/15 Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>:
> 中村(taedium)です。

> 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も作成しているでしょうか?

はい。creator_ut.diconは以下のようになっているので問題ないとは思いますが、

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
	"http://www.seasar.org/dtd/components24.dtd">
<components>
	<include path="convention.dicon"/>
	<include path="customizer.dicon"/>
	<component class="org.seasar.framework.container.creator.ActionCreator"/>
	<component class="org.seasar.struts.creator.FormCreator"/>
	<component class="org.seasar.framework.container.creator.ServiceCreator"/>
	<component class="org.seasar.framework.container.creator.DtoCreator"/>
	<component class="org.seasar.framework.container.creator.InterceptorCreator"/>
	<component class="org.seasar.framework.container.creator.DaoCreator"/>
    <component class="org.seasar.framework.container.creator.HelperCreator"/>
    <component class="jp.co.hoge.batch.creator.TaskCreator"/>
</components>

creator.diconの方には、一番下の行のcomponent定義がありませんでした。
本番用についても登録しておく必要がありますでしょうか?

質問ばかりで恐縮ですが、よろしくお願いします。


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