Java JMockitを使用するサンプル

JavaのJMockitを使用するサンプルです。

確認環境
・Eclipse4.8
・Java 8
・junit-4.12
・jmockit-1.43
・hamcrest-core-1.3

目次

説明 JMockitとは
取得 jarファイルの取得方法
サンプル JMockitを使用する
補足 エラーメッセージ表示時の対応

JMockitとは

  • JUnitでモックオブジェクトを利用するためのライブラリです。
  • モックオブジェクトを使用して返り値をコントロールできます。
  • 対象のクラスが未完成または戻り値をコントロールしたい場合に使用します。
  • 以下は、jmockitのリンクです。
    http://jmockit.github.io/
  • 実行する場合は、JUnit4の設定とテストコードの実行方法の知識が必要です。
    Java JUnit4の使い方とテストのサンプル

jarファイルの取得方法

Mavenから取得する、またはjarファイルをダウンロードで取得する方法です。

Mavenから取得する

pom.xmlのproject内に2~8行目を追加します。1,9行目がない場合は1,9行目も追加します。

<dependencies>
	<!-- https://mvnrepository.com/artifact/org.jmockit/jmockit -->
	<dependency>
	    <groupId>org.jmockit</groupId>
	    <artifactId>jmockit</artifactId>
	    <version>1.44</version>
	    <scope>test</scope>
	</dependency>
</dependencies>

 

jarファイルをダウンロードして取得する

1.jarファイルは、MavenRepositoryのサイトにあります。
https://mvnrepository.com/artifact/org.jmockit/jmockit

Versionの1.4.3をクリックして、以下の図の「Files」の横にあるjarをクリックするとjarファイルをダウンロードできます。

 

2.取得したjarファイルをクラスパスに追加します。
Eclipse jarファイルをクラスパスに設定する方法参照。

 

3.ビルドパスの読み込まれる順番は、JMockitのjarが先でJUnitのjarが後になるように設定します。

 

JMockitを使用する

以下のクラスのメソッドの戻り値はnullですが、JMockitを使用して文字列の「こんにちは」を返すようにします。

package test1;

public class Hello1 {
	String hello() {
		// 未実装
		return null;
	}
}

テストクラスのコード

テストクラスのコードを作成します。

package test1;
import static org.junit.Assert.*;
import org.junit.Test;
import mockit.Expectations;
import mockit.Mocked;
import static org.hamcrest.CoreMatchers.*;

public class Hello1Test {
	@Mocked
    private Hello1 mockedHello1;
	
	@Test
	public void test1() {
		// JMockitが返す値を設定する
		new Expectations() {{
			mockedHello1.hello();result = "こんにちは";
        }};
        // 対象のインスタンスを生成
        Hello1 h1 = new Hello1();
        // メソッドを実行
		String str1 = h1.hello();
		
		assertThat(str1, is("こんにちは")); // 成功
	}
}

15,16行目は、JMockitの機能でHello1クラスのhelloメソッドを実行したときに返す値を設定しています。

19,21行目は、Hello1クラスのインスタンスを生成し、メソッドを実行し返り値を取得しています。

23行目は、assertThatメソッドで実際の値と期待値を比較しています。結果は成功になります。
本来であればhelloメソッドはnullを返すはずですが、JMockitの機能で「こんにちは」が返ります。

assertThatの構文:assertThat(実際の値,is(期待の値))

エラーメッセージ表示時の対応

java.lang.IllegalStateException: Native library for Attach API not available in this JRE
Caused by: java.lang.IllegalStateException: JMockit didn't get initialized; please check the -javaagent JVM initialization parameter was used

テストコード実行時に上記のエラーが出る場合は以下の設定を行います。

1.Eclipseの「ウィンドウ」→「設定」→「Java」→「インストール済みのJRE」をクリックし、インストール済みのJREの一覧を表示します。
2.インストール済みのJREを選択して「編集」を押してJREの編集ダイアログを開きます。
3.「デフォルトのVM引数」に「-javaagent: 」とjmockitのパスを入力して完了を押します。
例:-javaagent:D:¥jar¥jmockit-1.43.jar

関連の記事

Java JUnit4の使い方とテストのサンプル
Java assertThatメソッドのサンプル

△上に戻る