簡體   English   中英

模擬配置接口是一種做法嗎?

[英]Mocking configuration interfaces as a practice?

我正在編寫一個測試用例,其中我需要測試一個對象,但是該對象需要大量配置才能正常工作。

現在,我有5個或6個接口,其中有許多方法,其中只有少數與測試該對象有關。

因此,問題是,是否應該適當地使用Mocking框架來模擬與配置相關的接口,還是應該在測試用例中實現接口以提供數據?

Mockito.mock(IConfiguration.class); //is this a proper use?

編輯:

我在某些地方讀過關於不使用模擬來模擬簡單對象的評論。 在我的情況下,對象很簡單,但接口卻很胖。 因此,有很多方法。

是的,這是一個很好的用例,因為實例化這些接口的實現通常並不容易。

配置應該是一個非常簡單的框架,該框架必須允許輕松創建測試實例-實際上每秒有成千上萬種不同的配置。 或者,如果我的代碼不支持數百個配置選項來調整其行為,為什么還要一個配置框架?

但是不幸的是,這種簡單的常識常常在編寫配置框架的人們中丟失。

在測試使用與configuration related interfaces的實現的任何類時,應使用這些配置接口的mock實現。

subject under test (SUT)將調用配置類的方法來完成其工作。 因此,對於給定的輸入,您只需要在配置類的方法的調用行為之前從測試的方法中調用它們的行為即可:

    public class ServiceTest {


    IConfiguration mockConfig;

    private ServiceUnderTest serviceUnderTest;

    @Before
    public void setup() {
        serviceUnderTest = new ServiceUnderTest();
        mockConfig = mock(IConfiguration.class);
        serviceUnderTest.setConfig(mockConfig);
    }

    @Test
    public void test(){
    //Here you can stub the behavior of method calls on "IConfiguration" before they're called
    }
}

在測試ServiceUnderTest單元時,不需要真正配置類的實現。 您只需要在這些配置類上添加方法調用的行為即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM