私は常に、クラスに保護されたメソッド getDate() があり、テスト目的でオーバーライドした方法で Dates をテストしてきました。例:
public class MyClass {
protected Date getDate(){
return new Date();
};
}
テスト:
MyClass myclass = new MyClass(){
@Override
protected Date getDate(){
return new Date(1234567890);
}
};
それは今日まで十分でしたが、次の問題が発生しました: 一度インスタンス化したいクラスがあるので、シングルトン パターンを使用します。
public static Something getInstance() {
if (instance == null) {
instance = new Something();
}
return instance;
}
問題は、この方法でオブジェクトを作成する必要があることです。Something.getInstance() - オブジェクトはそのメソッド内で作成されます。getInstance 内で getDate メソッドをオーバーライドすることはできません。意味がないからです (実際のインスタンスが必要な場合もあれば、インスタンスをテストする場合もあります)。これは私に質問をもたらします:そのような状況で日付をテストするにはどうすればよいですか?