JUnit4.4 - その3
昨日のつづき〜。
ソースを記述するときのはてな記法を覚えたのでさっそく使ってみる。
JUnitの実行にはmainメソッドを呼ぶ以外にも下記のような方法もあります。
(昨日と同じく実際に使うことは無いと思いますがwwでも仕組みがわかるので調べてて面白いです)
public static void main(String[] args){ JUnitCore core = new JUnitCore(); core.addListener(new FooListener()); Result result = core.runMain("com.mycompany.junit4test.FooTest"); System.exit(result.wasSuccessful() ? 0 : 1); }
JUnitCoreのインスタンスを生成してrunMainメソッドを呼ぶ(引数はテストクラスのFQCN)。
上のソースではテスト実行前や実行後に呼び出されるリスナークラスを追加しています。
リスナークラスの作り方はimport org.junit.runner.notification.RunListenerクラスを継承して、JUnitCoreのインスタンスに追加するだけ。
ちなみにこのRunListenerクラスのソースは下記のような感じ。
public class RunListener { public void testRunStarted(Description description) throws Exception { } public void testRunFinished(Result result) throws Exception { } public void testStarted(Description description) throws Exception { } public void testFinished(Description description) throws Exception { } public void testFailure(Failure failure) throws Exception { } public void testIgnored(Description description) throws Exception { } }
あえてabstractにせずに「使いたいメソッドだけ勝手にオーバーライドすれば?」的な感じがいいですよね〜。継承するクラスを作る人に全てを委ねる感じが。