LoginSignup
7
8

More than 5 years have passed since last update.

Spring TestでJMockitを使う方法

Posted at

簡単にできたけど、今後同じように迷わないように備忘録として残します。

各バージョン

訳あってSpringのバージョンが3.2.8.RELEASEですが、4系の最新版でも問題ないです。

  • Java
    1.8.0 update 92

  • Spring Framework
    3.2.8.RELEASE

  • JMockit
    1.23

  • JUnit
    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使い方メモ
がすごく参考になると思います。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8