Mockito 和測試抽象類別
測試抽象類別可能會帶來挑戰。透過繼承手動製作模擬感覺很麻煩且多餘。幸運的是,像 Mockito 這樣的模擬框架提供了替代方法。
Mockito 的模擬抽象類輔助
Mockito 可以無縫模擬抽象類,同時繞過顯式子類化的需要。透過利用 Mockito.mock(My.class, Answers.CALLS_REAL_METHODS),您可以建立繼承自抽象類別的模擬。此模擬既充當子類別又充當部分模擬。
避免抽象方法實作
Answers.CALLS_REAL_METHODS 設定可讓您模擬抽象方法而不實作它們。真正的方法將按原樣執行,除非在測試中明確刪除。
範例實作
考慮以下抽象類別和測試案例:
<code class="java">public abstract class My { public Result methodUnderTest() { ... } protected abstract void methodIDontCareAbout(); } public class MyTest { @Test public void shouldFailOnNullIdentifiers() { My my = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS); Assert.assertSomething(my.methodUnderTest()); } }</code>
在此範例中,模擬是使用Mockito.mock()建立的,Answers.CALLS_REAL_METHODS 確保方法methodUnderTest() 按照抽象類別中的定義運行,即使未實作methodIDontCareAbout() 。這種方法簡化了測試過程,並且無需手動建立子類別。
以上是Mockito 如何幫助您在沒有明確子類化的情況下測試抽象類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!