您好我有一个类ReadProperty
,它有一个返回类型ReadPropertyFile
的方法Myclass
,它从属性文件读取参数值并返回Myclass
对象。我需要帮助来使用ReadPropertyFile
来测试JUnit
方法,如果可能的话,使用模拟文件和模拟对象。
这是我的代码。
import java.io.FileInputStream;
import java.util.Properties;
public class ReadProperty {
public Myclass ReadPropertyFile(String fileName) {
Myclass myclass = null;
String testparam = null;
FileInputStream fis = null;
Properties prop = new Properties();
try {
fis = new FileInputStream(fileName);
try {
prop.load(fis);
System.out.println("Load Property file : Success !");
} catch (Exception ex) {
System.out.println("Load Property file : Exception : " + ex.toString());
}
/*
* loading the properties
*/
try {
testparam = prop.getProperty("testparam");
System.out.println("testparam Type : " + testparam);
} catch (Exception ex) {
System.out.println("testparam Type : " + ex.toString());
}
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("Property file read fail : " + ex.toString());
System.exit(1);
}
Myclass = new Myclass(testparam);
return Myclass;
} }
答案 0 :(得分:3)
我认为你真的不需要在这里嘲笑任何东西。您想要测试您的属性读取器是否能够按预期访问和读取文件,因此请进行测试。对于常规属性,它可以是这样的:
@Test
public void shouldReadPropFileFromSingleString() {
final Properties p = PropertiesLoader
.loadProperties("propfile");
assertNotNull(p);
assertFalse(p.isEmpty());
for (final Entry<Object, Object> e : p.entrySet()) {
assertEquals(expectedProperties.get(e.getKey()), e.getValue());
}
}
对于您的情况,您可以对其进行调整:
@Test
public void shouldReadCorrectProp() {
final MyClass p = ReadProperty
.readPropertyFile("propfile");
assertNotNull(p);
assertEquals(expectedProperty, p);
}
您可能还想测试悲伤的路径 - 如果找不到属性文件会发生什么,是否有可用的后备属性等。
顺便说一句,我建议更改方法名称,因为读取属性文件不是您方法的主要关注点 - 检索属性是。更好的是,将方法分解为getProperty
和readPropertyFile
方法,其中第一种方法调用第二种方法。因此,根据Separaton of Concerns ,您将拥有更清洁的设计