Mokito Framework
イントロ
MokitoはJavaアプリケーションをテストするためのフレームワークです。 複雑なオブジェクトの動作をシミュレートし、単体テストとエラー検出の開発を容易にします。
Mockitoはオープンソースであり、次のアドレスで利用可能です://mockito.org/。
Mockitoは他のオブジェクトの振る舞いをシミュレートするモックオブジェクトの原理に基づいています。
Mockitoテストの実装はいくつかのステップで行われます。
- モックオブジェクトの作成
- 予想される動作の説明
- モックを使う
- モックとのやりとりが正しいことを確認する
例
パブリッククラスClassA {パブリッククラスA(){}パブリック無効fonc1(){}パブリック無効fonc2(){}パブリックint fonc3(int a、int b){return a + b; パブリッククラスClassB {ClasseA ca;} public ClassA getCa(){return ca; public void setCa(ClassA ca){this.ca = ca;} } public ClassB(){ca = new ClassA(); } public void met1(){ca.fonc1();} ca.fonc1(); System.out.println(ca.fonc3(5、6)); } public void met2(){ca.fonc2();} }}
単体テストクラスClassB:
static org.mockito.Mockito.mockをインポートします。 org.mockito.Mockitoをインポートします。 パブリッククラステスト{public static void main(String [] args){ClassA ca = mock(ClassA.class);} ClassB cb = new ClassB(); cb.setCa(ca); cb.met1(); Mockito.verify(ca、Mockito×(2))。fonc1(); Mockito.verify(ca、Mockitox(1))。fonc3(Mockito.anyInt()、Mockito.anyInt()); }}
コード分析
ClassA ca = mock(ClassA.class);
=> AC、モッククラスClassAを作成します。
cb.setCa(ca);
=> caオブジェクトからcbオブジェクトに影響します。
cb.met1();
=> cb met1()メソッドでオブジェクトを呼び出します。
Mockito.verify(ca Mockito×(2))。func1();
=>モックca func1のメソッドが2回呼び出されることを確認します。
Mockito.verify(ca、Mockitox(1))。fonc3(Mockito.anyInt()、Mockito.anyInt());
=> mock func3 caのメソッドが2つの整数パラメータによって一度だけ呼び出されることを確認します。
チェックが失敗すると、例外が生成されます。
例:
Mockito.verify(ca、Mockito.atLeast(1))。fonc2();
=>この行は以下の例外を生成します。
スレッド "main"での例外要求されたが呼び出されていない:
classA.fonc2(); - > Test01.main(Test01.java:16)
==> ACを模擬するfunc2()メソッドが知られていないことを示します。
関数から返された結果を変更することもできます。
System.out.println( "" ca.fonc(3, 3)の結果は "+ ca.fonc3(3、3)です); Mockito.when(ca.fonc3(Mockito.anyInt()、Mockito.anyInt()))。then Return(Integer.valueOf(5)); System.out.println( "" ca.fonc(3, 3)の結果は "+ ca.fonc3(3、3)です);
コード分析
Mockito.when(ca.fonc3(Mockito.anyInt()、Mockito.anyInt())) thenReturn(Integer.valueOf(5));
#関数fonc3(mock)の戻り値は0です。
5にします。
これは、いくつかの機能(条件、ループなど)を含む機能を使用していて、その機能の動作を検証したい場合に特に便利です。 したがって、この関数で使用されるモックを、これらすべての条件を満たすように構成する必要があります。
wjaouadiからのヒント。