[Seasar-user:17476] Re: [S2 Container, Tiger 2.4.36] S2JUnit4 + Cool Deployモードでテストが失敗してしまう問題について
Toshihiro Nakamura
[E-MAIL ADDRESS DELETED]
2009年 5月 19日 (火) 13:05:01 JST
中村(taedium)です。
> 問題発生状況の詳細については後述しますが、本問題について、
>
> 1.こちらのモジュール構成がSMART Deploy機能を利用する
> 上で好ましくない構成となっている
>
> 2.S2JUnit4の使い方(機能制限?)を良く理解していない
>
> のいづれによるものなのか判断できませんでしたので、アドバイス
> を頂けないでしょうか?
Cool deloyでは、コンポーネント対象のクラスかどうかを確認するために
クラスをチェックしますが、その際にはクラスをロードしますので、
static初期化子もそこで実行されます。
今回のケースでは、S2JUnit4で開始されたコンテナの初期化中にHogeUtilが
ロードされ、HogeUtilのstatic初期化子が評価されます。
つまり、コンテナの初期化が終わる前にコンポーネントの取得が行われています。
static初期化子の使用はやめて
HogeUtilをこんな感じにしてはどうでしょうか。
public class HogeUtil {
public static EntityMetaFactory getInstance() {
return SingletonS2Container.getComponent("entityMetaFactory");
}
public static void main(String[] args) {
SingletonS2ContainerFactory.init();
}
}
--
Nakamura Toshihiro <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内