java - 如何对读取属性文件的类进行单元测试

标签 java testing junit properties

我正在尝试为读取属性文件的类编写 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;
    }
}

任何人都可以告诉我可以模拟和测试的测试用例场景吗?非常感谢您的帮助。

最佳答案

你的类实际上做了两件事:它加载一个属性文件,并存储一些特定的属性。

出于测试目的,您可以(应该?)一次只关注一个方面,或者通过将这两个角色拆分到不同的类中(例如 PropertiesLoader 和 PropertyStore),或者至少允许在您的类中进行一些注入(inject)。

如果您想正确测试您的类,从构造函数中删除不必要的代码始终是一个好主意:)

例如:

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; }
}

此代码将更容易测试,因为您可以专注于属性加载/检索的各个方面

关于java - 如何对读取属性文件的类进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36415599/

相关文章:

java - 如何更改服务器上使用的谷歌应用程序引擎的版本

java - 在客户端计算机上部署 java(swing, oracle) 项目时出错... java.lang.ClassNotFoundException :oracle. jdbc.driver.oracleDriver

javascript - 如果我没有 Mac 和 Safari,我该如何重现 Javascript 错误?

performance - 使用 XUnit 进行 Visual Studio 负载测试

spring-boot - Java 单元测试给出 NullPointer 异常

java - 如何模拟模拟对象的方法调用?

java - 如何通过用户单击 Android 浏览器中的元素来保存 HTML 页面的一部分

java - Java 客户端库 (AdWords) 的关键字迭代器

ruby-on-rails-3 - capybara 访问方法无效

junit - 有序启动和等待容器