Java JMockitのテストのサンプル

JavaのJMockitのテストのサンプルです。
JUnit4の設定とテストコードの実行についてはJava JUnit4のテストのサンプルを参照願います。

確認環境
・eclipse4.6
・jmockit-1.30
・junit-4.12
・hamcrest-core-1.3

目次

1.JMockit

  • JUnitでモックオブジェクトを利用するためのライブラリです。
  • モックオブジェクトを使用して返り値をコントロールすることができます。
  • 対象のクラスが未完成または戻り値をコントロールしたい場合に使用します。

2.jarファイルの取得

下記のサイトからjmockit-1.30.zipをダウンロード、またはMavenで取得します。

jmockitのサイト
http://jmockit.org/

ダウンロードしたzipを展開し以下のファイルを任意の場所に配置します。
jmockit.jar

3.jarファイルをクラスパス(ビルドパス)に追加

jmockit.jarをクラスパスに追加します。
クラスパスに追加する手順は、
Eclipse 外部jarファイルをクラスパス(ビルドパス)に設定する方法参照。
※ビルドパスの読み込まれる順番は、JMockitのjarが先でJUnitのjarが後になるように設定します。

4.テストするコード

以下のコードに対して、JMockitでテストを行います。
Test1というクラスで、runSampleというメソッドがあります。
メソッドの引数はなしで戻り値はString型です。
メソッドの内容は、nullを返すとのみ書いてあります。

package test1;

public class Test1  {
	String runSample() {
		// 未実装
		return null;
	}
}

5.テストクラスのコードを作成する

テストクラスのコードを作成します。
11-16行目はJMockitを使用して、Test1クラスのrunSampleメソッドを実行すると文字列の1を返すように設定しています。
→実際の上記のTest1クラスの挙動と違っています。
20行目は、assertThatメソッドで期待する値を文字列の1としています。実行すると成功になります。

package test1;
import static org.junit.Assert.*;
import org.junit.Test;
import mockit.Mock;
import mockit.MockUp;
import static org.hamcrest.CoreMatchers.*;

public class Test1Test {
	@Test
	public void testSyoriA() {
		new MockUp<Test1>() {
			@Mock()
			public String runSample() {
				return "1"; // 1を返すように設定
			}
		};

		Test1 s = new Test1();
		String a = s.runSample();
		assertThat(a, is("1")); //assertThat(実際の値,is(期待の値))
	}
}

6.補足

テストコード実行時に「java.lang.IllegalStateException: Native library for Attach API not available in this JRE」のエラーが出る場合は以下の設定をします。
1.Eclipseの「ウィンドウ」>「設定」>「Java」>「インストール済みのJRE」をクリックし、インストール済みのJREの一覧を表示します。
2.インストール済みのJREを選択して「編集」を押してJREの編集ダイアログを開きます。
3.「デフォルトのVM引数」に「-javaagent: 」とjmockitのパスを入力して完了を押します。
例:-javaagent:D:¥jar¥jmockit.jar

関連の記事

Java JUnit4のテストのサンプル
Java assertThatメソッドのサンプル

 はまったらエンジニア特化型Q&Aサイト
【teratail(テラテイル)】で質問しましょう!


△上に戻る