JUnit4.12がリリースされたのでcontext-nestを試してみた

8月にこの記事で知ったJUnit4.12ですが、先日betaが取れて正式にリリースされたようなので、おいしいとうわさのcontext-nestを試してみました。

まず、pom.xmljunitのバージョンを4.12に上げます

  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
  </dependency>


最初、何も考えず、こんな感じでつくりました。

public class HogeTest {
    private String hoge = "hoge";

    @Test
    public void test() {
        System.out.println(hoge);
    }

    public class HogeChild1 {
        @Test
        public void test1() {
            System.out.println(hoge);
        }
    }

    public class HogeChild2 {
        @Test
        public void test2() {
            System.out.println(hoge);
        }
    }
}

testメソッドしか実行されません。
もう一度読み返すと、テストランナーが必要とのこと。
で、テストランナーってなに使えばいいの?もしくはどうやって作ればいいの?と思っていろいろみてたらリリースノートにヒントが。

junit/ReleaseNotes4.12.md at master · junit-team/junit · GitHub

One example of a runner that makes use of this extension is the Hierarchical Context Runner (see https://github.com/bechte/junit-hierarchicalcontextrunner/wiki).

というわけでこれを使いました。

pom.xmlに追加します
現時点では4.11.3と4.12.0-beta-1しかありません。
ひとまず後者を使います。

  <dependency>
    <groupId>de.bechte.junit</groupId>
    <artifactId>junit-hierarchicalcontextrunner</artifactId>
    <version>4.12.0-beta-1</version>
    <scope>test</scope>
  </dependency>

これで上記のHogeTestクラスに@RunWith(HierarchicalContextRunner.class)
をつけると無事内部クラスのメソッドも実行されました。