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