[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 メーリングリストの案内