ひがやすを技術ブログ

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

Singletonの怖さ


Singletonはテストと相性が悪い。なぜなら、テストメソッド間で状態を維持してしまうからだ。
このようにいってきた私自身が、Singletonにはまってしまいました。
無念だ。心より恥じる。
S2Daoのテストをしているときに、ロールバックが効かない場合がありました。何でだろう。実はこの3日間、ずっと悩んでいました。
原因は、DaoMetaDataFactoryで、DataSourceごとキャッシュしていたためでした。Singletonで管理されていたため、前のテストで使ったDaoMetaDataが古いDataSourceごと次のテストで使われていたのです。
性能を確保するためにキャッシュするにしても、Singletonを使うのは避けた方がいい、ReadOnlyではないstatic変数は避けた方がいいということを身をもって知りました。