これは、Mockito2を使用していて、最終的なクラスとメソッドのモックをサポートする新しいインキュベーション機能を使用している場合に実行できます。
注意すべき重要な点:
1.「org.mockito.plugins.MockMaker」という名前のシンプルなファイルを作成し、「mockito-extensions」という名前のフォルダーに配置します。このフォルダーは、クラスパスで使用できるようにする必要があります。
2.上記で作成したファイルの内容は、以下に示すように1行である必要があります:
mock-maker-inline
上記の2つのステップは、mockito拡張メカニズムをアクティブにして、このオプトイン機能を使用するために必要です。
サンプルクラスは次のとおりです。
FinalClass.java
public final class FinalClass {
public final String hello(){
System.out.println("Final class says Hello!!!");
return "0";
}
}
Foo.java
public class Foo {
public String executeFinal(FinalClass finalClass){
return finalClass.hello();
}
}
FooTest.java
public class FooTest {
@Test
public void testFinalClass(){
// Instantiate the class under test.
Foo foo = new Foo();
// Instantiate the external dependency
FinalClass realFinalClass = new FinalClass();
// Create mock object for the final class.
FinalClass mockedFinalClass = mock(FinalClass.class);
// Provide stub for mocked object.
when(mockedFinalClass.hello()).thenReturn("1");
// assert
assertEquals("0", foo.executeFinal(realFinalClass));
assertEquals("1", foo.executeFinal(mockedFinalClass));
}
}
それが役に立てば幸い。
ここでは、完全な記事の存在をからかう-unmockableを。