[Seasar-user:960] 複数のdataSourceとS2TestCase
Hikaru Taniguchi
taniguchi
2004年 8月 27日 (金) 16:23:27 JST
tanigonです。
(以下 @S2.0.16)
いま 複数のDataSourceを使うような j2ee.dicon状態になっていて(実際に接続
先のデータベースも複数に渡る)、これをテストする時に
...TooManyRegistrationRuntimeException:
[ESSR0045]interface javax.sql.DataSourceに複数のコンポーネントが登録されています
とのことで、どうも S2TestCaseの
private void setupDataSource() {
try {
if (container_.hasComponentDef(DataSource.class)) {
dataSource_ = (DataSource) container_
.getComponent(DataSource.class);
} else if (container_.hasComponentDef(DATASOURCE_NAME)) {
dataSource_ = (DataSource) container_
.getComponent(DATASOURCE_NAME);
}
} catch (Throwable t) {
System.err.println(t);
}
}
ここみたいなのですが、複数のDataSourceを入れている場合に確実に 1つ目の
if()で例外になってしまい dataSource_ がセットされないのですが、 2つ目の
if()と順序を入れ替えるのをS2TestCaseの標準とする、ってのはダメでしょうか。
# この場合は、S2TestCaseで writedb するときに使うデータソースをnameで明
# 示的に指定することがテストケース作成者の務めになるのでokな感じがします。
あと、今回のテストケースの場合、複数のデータベースに跨ってテスト用のデー
タを準備する必要がありますが、S2TestCaseの仕様上一つのDataSourceしか補助
?対象としてくれないので、protectedな setterかなにかがあると助かるのです
がいかがでしょうか (現状 datasource_ は private scope)
ヘンな使い方、ヘンな考え方 してるかもしれませんが…
ご指摘いただけますと勉強になります。
# 複数のdataSourceを使うようなクラスの試験の場合 testHogeTx()なんかでト
# ランザクション勝手によろしく!が使えないんですよね、多分。やっぱムリが
# あるのかなあ... > dataSource
ではでは。
--
Hikaru Taniguchi <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内