Hatena::Groupprogram

ひとり開発日記。 このページをアンテナに追加 RSSフィード

2013/10/17 (Thu)

privateなコンストラクタをjUnit4でテスト

| privateなコンストラクタをjUnit4でテスト - ひとり開発日記。 を含むブックマーク はてなブックマーク - privateなコンストラクタをjUnit4でテスト - ひとり開発日記。

昨日の記事*1でテストカバレッジ取り始めたら、「privateなコンストラクタもテストカバレッジ」対象になる模様。

public class HogeUtils {

    private HogeUtils() {
    }

}

ユーティリティ系のstaticなメソッドのみのクラスで、newによるインスタンスを作らせないために、privateなコンストラクタを定義するのはよくあることなんですが、それのテストってどう書くんでしょ?

って、私はStackOverflow*2を見ながら、色々試してみたんですけど、「junit private コンストラクタ」でぐぐれば、普通に日本語の記事、いっぱいありましたね…。

    @Test
    public void testConstructor() {
        try {
            Constructor<?>[] constructors = HogeUtils.class.getDeclaredConstructors();

            assertThat(constructors.length, is(1));

            Constructor<?> defaultConstructor = constructors[0];
            assertThat(defaultConstructor.getParameterTypes().length, is(0));
            assertThat(Modifier.isPrivate(defaultConstructor.getModifiers()), is(true));

            defaultConstructor.setAccessible(true);
            Object instance = defaultConstructor.newInstance();
            assertThat(instance, is(notNullValue()));
            assertThat(instance, instanceOf(HogeUtils.class));
        } catch (Exception e) {
            fail(e.getMessage());
        }
    }

で、自分はこんな感じのテストを書きましたよ。

トラックバック - http://program.g.hatena.ne.jp/halflite/20131017