クラスに多数の静的メソッドが含まれている場合、誰も誤ってこのクラスのインスタンスを初期化しないようにするために、プライベート コンストラクターを作成しました。
private Utils() {
}
さて、コンストラクターが見えないとしたら、これをどうやってテストできるでしょうか? これはテストでカバーできるのでしょうか?
ベストアンサー1
反射を使うと、できるプライベートコンストラクタを呼び出します。
Constructor<Util> c = Utils.class.getDeclaredConstructor();
c.setAccessible(true);
Utils u = c.newInstance(); // Hello sailor
ただし、それさえも不可能にすることができます。
private Utils() {
throw new UnsupportedOperationException();
}
コンストラクターで例外をスローすることで、すべての試行を防止します。
私はクラス自体final
も作成します。理由はただ「次の理由」です:
public final class Utils {
private Utils() {
throw new UnsupportedOperationException();
}
}