Javaアプリケーションでプライベートコンストラクタをテストするにはどうすればいいですか? [重複] 質問する

Javaアプリケーションでプライベートコンストラクタをテストするにはどうすればいいですか? [重複] 質問する

クラスに多数の静的メソッドが含まれている場合、誰も誤ってこのクラスのインスタンスを初期化しないようにするために、プライベート コンストラクターを作成しました。

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();
    }
}

おすすめ記事