使用 Mockito 模擬抽象類別
測試抽象類別可能會帶來挑戰,特別是在考慮手動模擬創建的情況下。然而,利用 Mockito 提供了另一種方法。
Mockito.mock() 和 Answers.CALLS_REAL_METHODS
Mockito 的 mock() 方法可以取代手動建構模擬類別與 Answers.CALLS_REAL_METHODS 參數一起使用。此選項產生一個繼承自抽象類別的模擬類,並允許測試真實方法而無需明確實現它們。
範例:
考慮一個抽象類別 My with被測方法methodUnderTest()和抽象方法methodIDontCareAbout()。以下程式碼片段示範如何使用此方法測試methodUnderTest():
<code class="java">@Test public void shouldFailOnNullIdentifiers() { My my = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS); Assert.assertSomething(my.methodUnderTest()); }</code>
在此範例中,Mockito.mock(My.class, Answers.CALLS_REAL_METHODS) 建立My 的模擬實例,該實例允許真實的要運行methodUnderTest() 的實現,可以測試其邏輯。同時,抽象方法 methodIDontCareAbout() 不需要實現,因為測試不會呼叫它。
好處
這種方法簡化了測試透過消除建立自訂子類別或實作抽象方法的需要來實現抽象類別。它還保持了抽象類別和測試案例之間所需的分離,從而允許更乾淨、更簡潔的測試。
以上是Mockito 如何簡化抽象類別的測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!