staticクラスはテストしにくい

staticクラスというのは造語で、staticメソッドしか持たないユーティリティクラスの事を指しています。
この手のクラスは実務でよくみかけますが、状態を持つstaticクラスをつくってしまうとテストで苦労することになります。
例えばメッセージユーティリティクラスや、プロパティファイルから定数設定値を読み込むクラスが代表格でしょう。


これらのクラスをstaticクラスとして作ってしまうと、JUnitなどでテストするときに忘れずにリソースのクリアを行わないと、次のテストに影響が及ぶことになります。
しかし各開発者は通常、自分が興味のあるクラスのテストを単体で実行するため、その段階ではリソースのクリア漏れに気付かない可能性が高いです。

で、後でテストクラスをまとめて実行する際に苦労するわけです。



更に、テストが増えてきて並列実行したいなーと思っても、staticクラスのテストケースは並列実行でぎせんし、staticクラスに依存しているクラスも並列実行しにくくなります。



そんなわけでこの手のクラスは普通のクラスとして作ってDIでシングルトンスコープとして管理するのがいいと思います。