[java]djUnitをJunit4以降で利用する方法

@Testとimport static を使えばこんなに簡単〜

テスト対象クラスが↓こんなかんじとして

/**
 * テスト対象
 * System.exit()を返すだけのクラス
 * @author kazuki-kido
 */
public class Sample {
    /**
     * メインメソッド
     * @param args
     */
    public static void main(String[] args){
        System.exit(0);
    }
}

雛形が↓こんなかんじ。

import org.junit.Test;

import static jp.co.dgic.testing.framework.DJUnitTestCase.*;

/**
 * テストクラス
 * @author kazuki-kido
 */
public class SampleTest {
    /**
     * テストメソッドは通常のJUnit4の記述と同様
     */
    @Test
    public void simpleTest(){
        addReturnValue("java.lang.System", "exit");
        // テスト対象メソッドを実行
        Sample.main(null);
        // 1回のみ呼ばれていることを確認
        assertEquals(1, getCallCount("java.lang.System", "exit"));
        // System.exit(int)が0を返すことを確認
        assertEquals(0, (int)((Integer) getArgument("java.lang.System", "exit", 0)));
    }
}

何が嬉しいかっていうと、djUnitPOJO記述のJUnitに適用できるってこと。
DJUnitTestCaseを継承する必要なし。メソッド名の制約もなくなって非常においしいですね。

djUnit