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

时间:2012-09-06 12:55:46

标签: java junit

您好我有一个类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;
    } }

1 个答案:

答案 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);
}

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

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

,您将拥有更清洁的设计