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