いちSEのつぶやき

エンジニアとして、気になることを残していきます。

privateコンストラクタの実行

単体テストの基準として「カバレッジ100%」というのがよくある。
でも、Utilityクラスはインスタンス化させたくないので、
コンストラクタはprivate。
ということは、頑張っても基準は満たせない。


ホントに無理なのか、ちょっと調べてみたら実行できた。

テスト対象クラス
public class Sample{
private Sample(){}

public static String test(){
return "test";
}
}


テスト実行コード
Class sampleClass = Class.forName("Sample");
Constructor[] sample = sampleClass.getDeclaredConstructors();
sample[0].setAccessible(true);
sample[0].newInstance(null);

こんなことに何の意味が・・・。
【追記】
id:shot6からの情報連携
2005-03-26 - 日記
こんな弊害があるのね。