gpt4 book ai didi

java - Junit:如何测试从属性文件中读取属性的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:56:00 25 4
gpt4 key购买 nike

您好,我有一个 ReadProperty 类,它有一个返回类型为 Myclass 的方法 ReadPropertyFile,它从属性文件中读取参数值并返回Myclass 对象。我需要帮助使用 JUnit 测试 ReadPropertyFile 方法,如果可能的话使用模拟文件和模拟对象。

这是我的代码。

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

最佳答案

我不认为你真的需要在这里模拟任何东西。您想要测试您的属性读取器是否能够按照您的预期访问和读取文件,因此请准确地进行测试。对于常规属性,它可以像这样:

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

您可能还想测试 sad path - 如果找不到属性文件会发生什么,是否有可用的后备属性等。

顺便说一句,我建议更改方法名称,因为读取属性文件不是您的方法的主要关注点 - 检索属性才是。更好的是,将该方法分解为 getPropertyreadPropertyFile 方法,其中第一个方法调用第二个方法。因此,根据 Separaton of Concerns,您将拥有更简洁的设计

关于java - Junit:如何测试从属性文件中读取属性的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12300624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com