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