特定のクラス(FactoryProviders)を、単体テストで使用されているときに異なる動作をするように構成したいと思います。
public class ConnectionFactoryProvider {
public static IConnectionFactory getConnectionFactory() {
//return MockConnectionFactory if running in test mode and
//DefaultConnectionFactory is running in production mode
}
}
コードがテストモード(単体テスト)で実行されているか、本番モードで実行されているかに応じて、異なるConnectionFactoryを返す必要があります。
これを達成するための正しい方法は何ですか?いくつかの可能な解決策が思い浮かびます...しかし、それらのいずれかが広く採用されているイディオムですか?
- 本番モードとテストモードで実行すると値が異なるように、JVM引数を介したシステムプロパティ。
- 工場の完全修飾名をプロパティファイルに保持し、テストモードで実行するときに、ファイルシステムで別のプロパティファイルを使用できるようにします。これは、テストフェーズで実行するときにクラスパスの順序を制御できるため、Mavenで簡単に実行できますが、Eclipse内から単体テストを実行するときに達成できるかどうかはわかりません。
- MockConnectionFactoryを返すように、テストセットアップメソッドでConnectionFactoryProviderを構成します