Java 測試中 mock 物件

Zeeshan Afridi 2022年6月15日
Java 測試中 mock 物件

模擬物件有助於模擬和驗證真實物件,而無需在這些物件中執行真實程式碼。你可以設定一個 mock 來返回方法呼叫的特定結果,並輕鬆驗證該方法是否被呼叫。

如上所述,Mock 物件用於單元測試。如果你有一個要測試其方法的物件並且這些方法依賴於其他一些物件,那麼在這種情況下,你可以建立依賴項的模擬而不是該依賴項的實際例項,並且你可以測試你的物件隔離中。

Java 中的模擬物件

用於建立模擬物件的常見 Java 框架包括 JMockEasyMock。這兩個框架通常允許你建立模擬物件,並且你可以相應地定義它們的行為,以瞭解返回值和效果的確切期望。

例如,一個常見的用例可能是在模型-檢視-控制器 (MVC) 應用程式中,我們有一個資料訪問物件 (DAO) 層和一個執行業務邏輯的控制器。如果你想測試控制器並且控制器依賴於資料訪問物件 (DAO),那麼你可以製作一個 DAO 的模擬物件,它將虛擬物件返回給你的控制器。

模擬物件有助於測試你要測試的應用程式的功能,因為我們可以通過模擬這些依賴物件來實現所有依賴項。

如果他們通過了測試,則可以確定該測試下的單元是正確的。

需要考慮的一件重要事情是,模擬物件實現與它們模擬的真實物件相同的介面。這允許你的程式碼通過介面型別處理它們,就好像它們是真實事物的例項一樣。

要使用模擬物件,請匯入 Mockito 庫; 匯入靜態 org.mockito.Mockito.*; 允許你使用 mock() 方法,該方法有助於建立模擬物件例項。

下一步是模擬建立,語法是 List mockedList = mock(List.class);。現在要新增一些值,我們使用定義的 List 物件如下,mockedList.add("Value one"),並使用 verify() 方法驗證它,如下:verify(mockedList).add("one")

//Import Library
import static org.mockito.Mockito.*;

// Create Mock
 List mockedList = mock(List.class);

 //using mock object
 mockedList.add("one");
 mockedList.clear();

 // Varifying
 verify(mockedList).add("one");
 verify(mockedList).clear();
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn