簡體   English   中英

如何對讀取屬性文件的類進行單元測試

[英]How to unit test the class that reads Properties file

我正在嘗試為讀取屬性文件的類編寫Junit測試用例,這是我的代碼:

public class PropertiesRetreiver {

    private String foo = "";
    private String foo1 = "";
    private static String PROPERTIES_PATH ="data.properties";

    public PropertiesRetreiver() throws IOException {

        InputStream in = this.getClass().getResourceAsStream(PROPERTIES_PATH);
        Properties properties = new Properties();
        properties.load(in);

        foo = properties.getProperty("foo");
        foo1 = properties.getProperty("foo1");
    }

    public String getfoo() {
        return foo;
    }

    public String getfoo1() {
        return foo1;
    }
}

誰能給我關於我可以模擬和測試的測試用例場景的想法? 非常感謝您的幫助。

您的課程實際上做了兩件事:它加載一個屬性文件,並存儲一些特定的屬性。

出於測試目的,您可以(應該?)一次只專注於一個方面,方法是將這兩個角色拆分為不同的類(例如,PropertyLoader和PropertyStore),或者至少允許在類中進行一些注入。

如果要正確地測試類,從構造函數中刪除不必要的代碼總是一個好主意:)

例如:

public class PropertiesRetreiver {

    private String foo = "";
    private String foo1 = "";
    private static String PROPERTIES_PATH ="data.properties";

    public PropertiesRetreiver() {
    }

    public void loadProperties() throws IOException {
        loadProperties(PROPERTIES_PATH);
    }
    public void loadProperties(String path) throws IOException {
        InputStream in = this.getClass().getResourceAsStream(path);
        Properties properties = new Properties();
        properties.load(in);
        loadProperties(properties);
    }
    public void loadProperties(Properties properties) {
        foo = properties.getProperty("foo");
        foo1 = properties.getProperty("foo1");
    }

    public String getfoo() { return foo; }    
    public String getfoo1() { return foo1; }
}

由於您可以專注於屬性加載/還原的各個方面,因此該代碼將更易於測試

暫無
暫無

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

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