JUnit4 + djUnit (without JUnit3)の覚書
今日は午後から外出するので早めの書き込みです。キーワードは、
- Movin' on without setUp()
- MockObjectManager.initialize()
Movin' on without setUp()
JUnit4からアノテーション(@Test,@Before...)をサポートするようになったので、古き良き?JUnit3で宣言していた、
- extends TestCase (djUnitの場合:DJUnitTestCase)
- setUp()
などなど、不要になっている。JUnit4の場合、
public void setUp() throws Exception { // テストメソッドの前処理 }
だけでは実行されないので、
@Before public void setUp() throws Exception { // テストメソッドの前処理 }
としないと駄目。但し、setUp()固定ではなく任意名でOKになった!
MockObjectManager.initialize()
Virtual Mock Objectやカバレッジツールで超便利なdjUnitですが、JUnit3をベースとしたTesting Frameworkであるが故、JUnit4 + djUnitの場合、ちょっと一工夫が必要。
以下、本家サイトの抜粋:
DJUnitTestCaseの機能は、すべてMockObjectManagerクラスが持っており、DJUnitTestCaseは、代理呼び出ししているだけです。
http://works.dgic.co.jp/djwiki/Viewpage.do?pid=@E38386E382B9E38388E382B1E383BCE382B9E381AEE6BA96E58299
なるる。もしかして、djUnitの「d」は、delegate(委任とか委譲とか代理とか代表)の略なのかな?
DJUnitTestCase extends TestCaseだから、setUp()もオーバーライドしているようで、
protected void setUp() throws Exception { super.setUp(); MockObjectManager.initialize(); // 毎回なにかを初期化している! }
だったようで。なので、JUnit4 + djUnitの場合、
@Before public void setUp() throws Exception { MockObjectManager.initialize(); }
としなきゃ駄目。MockObjectManager.initialize()は何かを初期化してるんですね。
例えば、DJUnitTestCaseクラスの検査メソッド
- public static void assertCalled(String className, String methodName)
- public static int getCallCount(String className, String methodName)
などなど、テストメソッドを実行する前処理でカウント初期化とかしてる筈b
いじょ