我有一个类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测试的新手。
答案 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"));
}
}