簡単にできたけど、今後同じように迷わないように備忘録として残します。
各バージョン
訳あってSpring
のバージョンが3.2.8.RELEASE
ですが、4系の最新版でも問題ないです。
Java
1.8.0 update 92Spring Framework
3.2.8.RELEASEJMockit
1.23JUnit
4.12
はじめに
一般的なJMockit
を使ったテストの実行方法は、
SampleTest.java
package jp.ijufumi.sample.test;
import mockit.integration.junit4.JMockit;
import org.junit.runner.RunWith;
@RunWith(JMockit.class)
public class SampleTest {
}
などのように、@RunWith(JMockit.class)
を使って行うかと思います。
ただ、Spring
を使ったシステムでのテストを実行する場合は、@RunWith(SpringJUnit4ClassRunner.class)
を指定したいところなので、
Spring Test
の機能にあるTestExecutionListener
を使って実行したいと思います。
やり方
まず、mockit.integration.junit4.JMockit
と同様な処理を行うTestExecutionListener
を用意します。
JMockitTestExecutionListener.java
package jp.ijufumi.sample.test.support;
import mockit.internal.startup.Startup;
import org.springframework.test.context.support.AbstractTestExecutionListener;
public class JMockitTestExecutionListener extends AbstractTestExecutionListener {
static { Startup.initializeIfPossible(); }
}
そして、それを@TestExecutionListener
アノテーションに指定するだけです。
SampleTest2.java
package jp.ijufumi.sample.test;
import jp.ijufumi.sample.test.support.JMockitTestExecutionListener;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestExecutionListeners;
import org.junit.runner.RunWith;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath*:META-INF/spring/applicationContext-test.xml"})
@TestExecutionListeners({
JMockitTestExecutionListener.class
})
public class SampleTest2 {
}
おわりに
JMockit
自体の使い方は
* JMockit使い方メモ
がすごく参考になると思います。