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にせずに「使いたいメソッドだけ勝手にオーバーライドすれば?」的な感じがいいですよね〜。継承するクラスを作る人に全てを委ねる感じが。