轉載:https://blog.csdn.net/qq_30141957/article/details/81273829函數
項目中,有些函數須要處理某個服務的返回結果,而在對函數單元測試的時候,又不能啓動那些服務,這裏就能夠利用Mockito工具。Mockito中的Mock和Spy均可用於攔截那些還沒有實現或不指望被真實調用的對象和方法,併爲其設置自定義行爲。兩者的區別在於:工具
一、Mock聲明的對象,對函數的調用均執行mock(即虛假函數),不執行真正部分。單元測試
二、Spy聲明的對象,對函數的調用均執行真正部分。測試
例:this
-
-
-
public void fun(String s) {
-
System.
out.println(s + " : fun");
-
-
-
-
-
public void fun1(String s) {
-
System.
out.println(s + " : fun1");
-
-
-
private void fun2(String s) {
-
System.
out.println(s + " : fun2");
-
-
-
-
-
-
Mock使用實例
一、使用doCallRealMethod().when()調用函數真正部分。spa
二、使用when().thenReturn自定義函數返回值。.net
-
import static org.mockito.ArgumentMatchers.anyString;
-
import static org.mockito.Mockito.doCallRealMethod;
-
import static org.mockito.Mockito.when;
-
-
-
-
-
import org.mockito.MockitoAnnotations;
-
-
-
-
-
-
-
-
-
MockitoAnnotations.initMocks(
this);
-
-
-
-
-
-
mockMain.
fun("mock test One");
-
-
-
-
-
-
doCallRealMethod().
when(mockMain).fun(anyString());
-
mockMain.
fun("mock test Two");
-
-
-
System.
out.println("val: " + mockMain.getVal());
-
-
-
when(mockMain.getVal()).thenReturn(10);
-
System.
out.println("val: " + mockMain.getVal());
-
-
-
Spy使用實例
一、使用when().thenReturn自定義函數返回值。3d
-
import static org.mockito.Mockito.when;
-
-
-
-
import org.mockito.MockitoAnnotations;
-
-
-
-
-
-
-
-
-
-
MockitoAnnotations.initMocks(
this);
-
-
-
-
-
-
spyMain.
fun("mock test One");
-
-
-
System.
out.println("val: " + spyMain.getVal());
-
-
when(spyMain.getVal()).thenReturn(10);
-
System.
out.println("val: " + spyMain.getVal());
-
-
參考文章:code
一、mockito中實現部分mock兩種方式對象
二、@mock和@spy在mock私有方法的區別,使用@spy模擬私有方法進行測試時sonar統計是有覆蓋率的
三、Mockito的參數匹配