用Mockito測試Java抽象類別教程

來源:互聯網
上載者:User

想要測試一個抽象類別,有什麼好辦法可以不用真正繼承這個類就可以進行測試嗎?如果使用Mockito架構又要怎麼做?

我想測試一個抽象類別。當然我可以寫一個繼承這個抽象類別的mock。我可以用mocking架構(我在用Mockito),而不是用手寫mock來做嗎?怎樣做?

採納答案:

以下的建議可以讓你不用建立“實際”的子類來測試抽象類別 —— Mock就是子類。

使用Mockito.mock(My.class, Mockito.CALLS_REAL_METHODS),然後就可以mock任何被調用的抽象method。

樣本:

 代碼如下 複製代碼
public abstract class My {
  public Result methodUnderTest() { ... }
  protected abstract void methodIDontCareAbout();
}
 
public class MyTest {
    @Test
    public void shouldFailOnNullIdentifiers() {
        My my = Mockito.mock(My.class, Mockito.CALLS_REAL_METHODS);
        Assert.assertSomething(my.methodUnderTest());
    }
}


注意:這個方法的美妙之處就是只要抽象methods沒有被調用,你就不實現執行他們。

依小弟愚見,這比使用spy更加簡潔,因為spy需要執行個體,也就是說你必須為你的抽象類別建立一個可以執行個體化的子類。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.