[Seasar-user:10773] Re: 【S2TigerTestCase】 EasyMock利用時のモッククラスのコンポーネント化とDIについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 9月 28日 (金) 23:00:11 JST


小林 (koichik) です.

Date:    28 Sep 2007 21:48:45 +0900
From:    [E-MAIL ADDRESS DELETED]
To:       [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:10772] 【S2TigerTestCase】 EasyMock利用時のモッククラスのコンポーネント化とDIについて

> それで、JUnitでDIされたいクラスに@EasyMock(register=true)アノテーションを
> 追加しているのですが、コンポーネント化されないためにDIされません。

@EasyMock(register=true) で作成されるコンポーネントは,
ルートのコンテナに登録されます.一方,

>   protected void setUP(){
>     include("test.dicon");
>   }

test.dicon はルートのコンテナの子となります.
# setUP() ではなくて setUp() です.
      ^                  ^
そのため,test.dicon に記述されたコンポーネントから
@EasyMock(register=true) で作成されるコンポーネントは
参照することができません.
こちらの図も参考にしてください.

http://s2container.seasar.org/2.4/s2-framework/ja/apidocs/org/seasar/framework/container/S2Container.html

そこで,test.dicon がルートのコンテナになるように
する必要があります.
それには,以下のメソッドをテストクラスに作成します.

protected String getRootDicon() {
  return "test.dicon";
}

この場合,setUp() で test.dicon をインクルード
する必要はありません.

あるいは,テスト対象クラスが少なければ,
test.dicon を使用せずに,

protected void setUp() throws Exception {
  super.setUp();
  register(OyaImpl.class);
}

とするだけでいいかもしれません.


> 説明にある「S2EasyMockTestCase」は古い(?)様ですので

ごめんなさい,昔の名前になってました.m(__)m



--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




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