JUnit4.12がリリースされたのでcontext-nestを試してみた
8月にこの記事で知ったJUnit4.12ですが、先日betaが取れて正式にリリースされたようなので、おいしいとうわさのcontext-nestを試してみました。
まず、pom.xmlのjunitのバージョンを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)
をつけると無事内部クラスのメソッドも実行されました。