如何使用Junit仅测试java中.properties文件中的“key”

时间:2015-10-11 04:40:52

标签: java junit key properties-file

我有一个类ReadPropertyFile,它包含一个名为getPropertyFor的方法,它返回给定键的值作为参数。 getPropertyFor()方法我从其他类调用key作为输入参数。我的属性filetestConfig.properties(文件名)的内容是: FILE_NAME = d:/Refreshed_data_daily/all_hue_posts_in_excel.xlsx

    public class ReadPropertyFile {


    private Properties properties;
    public ReadPropertyFile(String propertyFileName) {

        properties= new Properties();
        try {
            properties.load(new FileReader(propertyFileName));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public String getPropertyFor(String key) {
        return properties.getProperty(key);
    }
}

@Test
public void testFilePathValueInConfigFile(){
    assertEquals(propertyFileObj.getPropertyFor(keyForFilePath), "D:/Refreshed_data_daily/all_hue_posts_in_excel.xlsx");
}

上述测试用例是检查函数返回的值是否正确。如何检查密钥是否正确?可能是测试密钥的可能测试用例。我不想更改我的testConfig.properties文件以进行测试。 我需要帮助,我是Java Junit测试的新手。

2 个答案:

答案 0 :(得分:0)

如果要测试属性文件中是否存在密钥,则有两种方法:

如果已通过属性构造函数为某些预定义值指定了属性的dafault值,并且如果您尝试获取该键并且它不存在,那么您将获得此默认值。在这种情况下,您必须检查您的退货是否等于此默认值。

但是如果你没有提供默认值,那么你可以简单地在它的返回值上使用asserNotNull,因为Propery的javadoc#getProperty:

  

在此属性列表中搜索具有指定键的属性。如果在此属性列表中找不到该键,则会检查默认属性列表及其默认值(递归)。如果找不到该属性,则该方法返回null。

但是在单元测试的情况下,您必须提供许多不同的属性来测试您的方法或类的所有可能行为。

答案 1 :(得分:0)

假设您有一个名为myprop.properties的属性文件:

key1=value1
key2=
key3

您可以编写以下4项测试来检查属性是否缺失。如不同情况所示,当您调用properties.get(“key4”)时,只有不在属性文件内的键(key4)才会返回null 。在key1的情况下,它返回value1。在key2和key3的情况下,返回空字符串。

因此,要检查属性文件中是否存在密钥,可以使用 Assert.assertNull(properties.get(KEY_NAME))

public class CheckPropertiesTest {
Properties properties = new Properties();

@Before
public void init() throws IOException {
    properties.load(CheckProperties.class.getResourceAsStream("/myprop.properties"));
}

@Test
public void test1() {
    Assert.assertNotNull(properties.get("key1"));
}

@Test
public void test2() {
    Assert.assertNotNull(properties.get("key2"));
}

@Test
public void test3() {
    Assert.assertNotNull(properties.get("key3"));
}

@Test
public void test4() {
    Assert.assertNull(properties.get("key4"));
}
}