[Seasar-user:16466] Re: TeedaTestCase の org.seasar.framework.exception.NoSuchConstructorRuntimeException
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2008年 12月 8日 (月) 18:00:19 JST
小林 (koichik) です.
Date: Mon, 8 Dec 2008 16:44:55 +0900 (JST)
From: <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:16465] TeedaTestCase の org.seasar.framework.exception.NoSuchConstructorRuntimeException
> Serviceクラスを作成し、テストを行っていますがエラーが発生してしまい
> 困っています。Serviceクラス(DosBaseReportService )は、AbstactReportService というクラスを継承しており、コンストラクタで親クラスのコンストラクタを呼んでいますが、どうやらsuper()のところで
> org.seasar.framework.exception.NoSuchConstructorRuntimeException
> が発生しているようです。
>
> /****
> * テストクラス
> *
> */
> public class DosBaseServiceTest extends TeedaTestCase{
>
> DosBaseReportService dosBaseReportService;
このフィールドを削除してください.
テストメソッドを実行する前に,TeedaTestCase は
このフィールドにコンポーネントを設定するため
DosBaseReportService をインスタンス化しようとします.
しかし,DosBaseReportService には引数のない
コンストラクタ (デフォルトコンストラクタ) が
存在しないため,
> org.seasar.framework.exception.NoSuchConstructorRuntimeException: [ESSR0064]クラス(nsdos.service.DosBaseReportService$$EnhancedByS2AOP$$1682a53)のコンストラクタ(DosBaseReportService$$EnhancedByS2AOP$$1682a53())が見つかりません
ということになります.
このテストメソッドでは,
> DosBaseReportService dosBaseReportService = new
> DosBaseReportService(path);
> dosBaseReportService.writeExcel();
という使い方をしているのでインスタンス
フィールドは不要です.
もしコンテナから DosBaseReportService の
インスタンスを取得する必要があるなら,
dicon でコンストラクタの引数を指定する
必要があります.
<component class="DosBaseReportService">
<arg>"C"</arg><!-- コンストラクタ引数 -->
</component>
http://s2container.seasar.org/2.4/ja/DIContainer.html#ConstructorInjection
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内