[Seasar-user:5104] Re: [S2Unit]コンテナをcreateするクラスのテストについて
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2006年 11月 14日 (火) 21:30:38 JST
小林 (koichik) です.
Date: Tue, 14 Nov 2006 19:50:26 +0900
From: "Minoru Taki" <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:5103] [S2Unit]コンテナをcreateするクラスのテストについて
> コンテナを新たにcreateするクラスではj2ee.requiredTxを設定しても
> 別トランザクションとなるようで、正しくテスト結果が得られません。
> これは仕様でしょうか?(使い方が間違っているのでしょうか?)
> それとも、readXlsAllReplaceDbやreadXlsWriteDBメソッドは
> DAOのテスト用(=コンテナをcreateするクラスでは利用できない)
> ということなのでしょうか?
コンテナを作成しないで,BusinessImpl を次のように
してください.
> -- BusinessImpl.java ----------------------------------------------------------------------
package hoge;
import java.util.ArrayList;
public class BusinessImpl implements BusinessIF{
SampleDao dao;
public void setSampleDao(SampleDao dao) {
this.dao = dao;
}
public ArrayList execSearch(BaseDataIF param) throws Exception{
ArrayList list;
list = dao.select((SampleDto)param);
return list;
}
}
Dao を自発的に「取りに行く」のではなく,「セットしてもらう」
のが DI (依存性注入) のやり方です.
こうすることで,BusinessTest#testCase1Tx() で開始された
トランザクションの元でで BusinessImpl が Dao にアクセス
できます.
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
Seasar-user メーリングリストの案内