JavaのJMockitを使用するサンプルです。
確認環境 (Eclipse4.8、Java 8、jmockit-1.49、junit-4.12、hamcrest-core-1.3)
目次 | JMockitとは / jmockitを取得する |
今回のプロジェクトのファイル | |
テストするコード | |
jmockitでモックを作成する(テストクラス) | |
テスト実行時にエラーが出た場合 |
JMockitとは
- JUnitでモックオブジェクトを利用するためのライブラリです。
- モックオブジェクトを使用して返り値をコントロールできます。
- 対象のクラスが未完成または戻り値をコントロールしたい場合に使用します。
- 以下は、jmockitのリンクです。
http://jmockit.github.io/ - 実行する場合は、JUnit4の設定とテストコードの実行方法の知識が必要です。
Java JUnit4の使い方とテストのサンプル
jmockitを取得する
Mavenで取得
pom.xmlのproject内に追加します。
<!-- https://mvnrepository.com/artifact/org.jmockit/jmockit -->
<dependency>
<groupId>org.jmockit</groupId>
<artifactId>jmockit</artifactId>
<version>1.49</version>
<scope>test</scope>
</dependency>
jarファイルで取得
jarファイルは、MavenRepositoryのサイトにあります。
https://mvnrepository.com/artifact/org.jmockit/jmockit
Versionの1.4.3をクリックして、以下の図の「Files」の横にあるjarをクリックするとjarファイルをダウンロードできます。
取得したjarファイルをクラスパスに追加します。
Eclipse jarファイルをクラスパスに設定する方法参照。
ビルドパスの読み込まれる順番は、JMockitのjarが先でその後にJUnitのjarを設定します。
今回のプロジェクトのファイル
今回のプロジェクトのファイルは以下のとおりです。
テストするコード
以下のクラスに対してテストします。
package test1;
public class Color {
String getName(String a) {
// 未実装
return null;
}
}
jmockitでモックを作成する(テストクラス)
モックを作成します。
package test1;
import static org.junit.Assert.*;
import org.junit.Test;
import mockit.Expectations;
import mockit.Mocked;
import static org.hamcrest.CoreMatchers.*;
public class ColorTest {
@Mocked
private Color Color1;
@Test
public void test1() {
// JMockitが返す値を設定する
new Expectations() {
{
Color1.getName("色は");
result = "色は赤です";
}
};
// 対象のインスタンスを生成
Color c1 = new Color();
String str1 = c1.getName("色は");
assertThat(str1, is("色は赤です")); // 成功
}
@Test
public void test2() {
new Expectations() {
{
Color1.getName(null);
result = "nullです";
}
};
Color c1 = new Color();
String str1 = c1.getName(null);
assertThat(str1, is("nullです")); // 成功
}
}
15~19行目は、JMockitの機能でColorクラスのgetNameメソッドを実行したときに返す値を設定しています。
22,23行目は、Colorクラスのインスタンスを生成し、メソッドを実行し返り値を取得しています。
24行目は、assertThatメソッドで実際の値と期待値を比較しています。結果は成功になります。
本来であればgetNameメソッドはnullを返すはずですが、JMockitの機能で「色は赤です」が返ります。
assertThatの構文は以下のとおりです。
assertThat(実際の値,is(期待の値)) |
テストの結果が想定どうりの場合は、緑色の帯が表示され、失敗は0で表示されます。
テスト実行時にエラーが出た場合
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.49.jar
関連の記事