【1】設定手順
1)JMockit をダウンロードする
* 下記URLから JMockit (jmockit-X.X.zip)を取得する。 => 下記のサイトからリンク「current release」を押下して取得する
http://jmockit.googlecode.com/svn/trunk/www/gettingStarted.html
2)ダウンロードしたファイル「jmockit-X.X.zip」を解凍
* Windows8の環境下で解凍ソフト「Lhaplus」を使用して解凍したら 警告やらエラーが出て、正常に解凍されない(★ここではまった★) => ファイル「jmockit-X.X.zip」を右クリックし「すべて展開(T)」を選択し 解凍すればOK!
3)jar をEclipseに取り込む
[3-1] 解凍したフォルダ内の以下のJarファイルを 対象のプロジェクト内の任意のフォルダ(ここでは「lib」)に格納する + jmockit.jar + jmockit-coverage.jar [3-2] 対象のプロジェクトを右クリックし、[Properties]-[Java Build Path]-[Libraries]で 「Add JARs」ボタン押下し [3-1]で格納したJarファイルを追加する ## 4)jmockit をクラスパスをJUnit本体より先にする
[4-1] 対象のプロジェクトを右クリックし、[Properties]-[Java Build Path]-[Order and Export]を選択 [4-2] [JUnit4」が「jmockit.jar」「jmockit-coverage.jar」よりも上に表示されている場合 [JUnit4」を選択し「Bottom」ボタン押下
## 5)プログラムを書く
- 以下のサンプルを参照のこと
## 6)テスト実行
- 後は右クリックし、[Run As]-[JUnit Test]でテスト実行
# 【2】サンプル ** Mock対象のクラス「SampleClass.java」 **
public class SampleClass { public String getValue() { return "Hellow World!"; } }
** テストクラス「SampleClass01Test.java」 **
import static org.junit.Assert.*; import mockit.Mocked; import mockit.NonStrictExpectations; import org.junit.Test;
public class SampleClassTest { @Mocked private SampleClass mockSampleClass;
@Test public void testGetValue() throws Exception { new NonStrictExpectations() { { mockSampleClass.getValue(); result = "Fixed value"; } };
assertEquals("Fixed value", this.mockSampleClass.getValue());
} }
** 出力結果 **
Windows8環境下で動かない。。。
Linuxだと動くのに。
# 【3】トラブルシューティング
実行時に以下の例外で動かない。。。
java.lang.IllegalStateException: Native library for Attach API not available in this JRE
at mockit.internal.startup.AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(AgentLoader.java:88)
at mockit.internal.startup.AgentLoader.loadAgent(AgentLoader.java:47)
at mockit.internal.startup.AgentInitialization.loadAgentFromLocalJarFile(AgentInitialization.java:27)
at mockit.internal.startup.Startup.initializeIfPossible(Startup.java:252)
at org.junit.runner.Runner.
** 参考文献 **
以下が関係?
http://kishkz.hatenablog.jp/entry/2012/11/10/165147 # 【4】利点
- 他のMockとの比較して、機能を網羅されている(以下を参照のこと)
https://code.google.com/p/jmockit/wiki/MockingToolkitComparisonMatrix # 【5】使用上の注意
- private 定数(private static final)は変更できないらしい
http://d.hatena.ne.jp/taka_2/20150418/p1 # 参考文献 http://genesis-tdsg.blogspot.jp/2013/08/jmockit.html http://genesis-tdsg.blogspot.jp/2013/08/jmockit_25.html http://genesis-tdsg.blogspot.jp/2013/09/jmockitweb.html http://genesis-tdsg.blogspot.jp/2013/09/jmockitnew.html http://genesis-tdsg.blogspot.jp/2013/09/jmockitprivate.html http://genesis-tdsg.blogspot.jp/2013/09/jmockitstatic.html http://genesis-tdsg.blogspot.jp/2013/09/jmockit.html http://genesis-tdsg.blogspot.jp/2013/09/jmockit_30.html http://genesis-tdsg.blogspot.jp/2013/10/jmockit.html http://genesis-tdsg.blogspot.jp/2013/10/jmockit_21.html http://genesis-tdsg.blogspot.jp/2013/10/jmockiteclipse.html # 関連記事 ** Mockito ~ 入門編 ~ ** https://dk521123.hatenablog.com/entry/2014/07/18/233904 ** Mockito ~ 基本編 ~ ** https://dk521123.hatenablog.com/entry/2014/07/19/121409