ひがやすを技術ブログ

電通国際情報サービスのプログラマ

ダイコンさぷり

この番組は、あなたのダイコン脳を活性化させます。
今日の問題は、id:makotanさんの出題です。
http://d.hatena.ne.jp/makotan/20040611#p2
HogeAimpl extends HogeA
HogeBimpl extends HogeB
のどちらにもダイコンファイル名が埋め込まれています。
HogeBimplをテストのときには、HogeBDummyに置き換えたい。
でもダイコンファイルにはHogeBImplと記述されているので、
どうすればよいのか。


ダイコンファイルのパスをコンポーネントに記述するのを止めます。
コンポーネントでコンテナのインスタンスを取得したい場合は、
setContainer(S2Container container)のメソッドを
実装することで、自動的にDIされます。
次にテスト用のダイコンファイルです。


<component class="HogeAImpl"/>
<component class="HogeBDummy"/>
このファイルをS2TestCaseのsetUp()で読み込みます。

public void setUp() {
include("hogetest.dicon");
}
テストケースの中で

private HogeA hogeA_;
と定義しておけば、S2TestCaseがhogeA_も自動的にDIしてくれます。
これで脳はすっきり(解決)したでしょうか。