首頁 >Java >java教程 >Mockito 如何幫助您在沒有明確子類化的情況下測試抽象類別?

Mockito 如何幫助您在沒有明確子類化的情況下測試抽象類別?

Susan Sarandon
Susan Sarandon原創
2024-10-30 08:01:27493瀏覽

How Can Mockito Help You Test Abstract Classes Without Explicit Subclassing?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn