日々常々

ふつうのプログラマがあたりまえにしたいこと。

NUnitのTestCaseが羨ましいのでJUnitでできるようにしてみた

車輪の再発明万歳。

こんな感じ。(若干予定含む)

    @Tests({
            @Case({"str1", "str1"}),
            @Case(value = {"str2", "str2"}, name = "hoge"),
            @Case(value = {"str3", "str3"}, expected = Exception.class),
            @Case({"str4", "str4"})
    })
    public void parameterTestsCase(String actual, String expected) {
        assertThat(actual, is(expected));
    }

アノテーションとかJavaの制約が地味にめんどくさい。

  • 同じアノテーション複数書けない。
  • パラメータ以外のものを使えるようにしたら value が登場する。
    • valueしかない時は省略できるんだけど
    • ダサくてモチベがあがらないのでnameとかexpectedとか保留にしてる
    • でも省略できてる時の "({" とか "})" とかもダサい。

無駄にLambdaのメソッドリファレンスとか使ってるから、Java8でないとコンパイルできません。うへへ。

ParameterizedとかTheoriesとか

あいつらテストクラス単位でパラメータになるから、メソッド単位でしか要らないとき冗長なんだよねー。
そして大半はメソッド単位で十分だったりするし。

出来てから検索したら有ったよ?

junitparams - Parameterised tests that don't suck - Google Project Hosting
ええねん。ええねん……。