一、背景介绍
在使用Java+Maven+Selenium+Tesng+Jedis+Jenkins做WebUI自动化测试过程中,由于常用的配置数据可能会变化,所以将常见的的数据以键值对的形式存储在properties文件中。
然后封装一个properties文件内容获取工具类,后续需要相关数据时,直接通过调用相关方法读取相关值即可。properties文件格式如下:键=值
driver.chromeDriverLinux=drivers/chromedriver
driver.chromeDriver=drivers/chromedriver80.exe
/**省略文本**/
二、实现逻辑
三、实现代码
public class PropertyReader {
/*创建Properties类的对象*/
private static Properties properties;
/**
* 使用static静态代码块读取properties文件,并将将文件内容保存在static属性中
* 高效方便,一次加载,多次使用
* */
static{
loadProps();
}
/**
* 用于加载properties文件
* 并将properties文件内容加载到定义的properties对象中
*/
synchronized static private void loadProps(){
System.out.println("开始加载properties文件内容.......");
properties = new Properties();
BufferedReader bufferedReader=null;
try {
/*创建字符缓存流,路径为当前项目路径下的文件*/
bufferedReader=new BufferedReader(
new InputStreamReader(
new FileInputStream(
"src/test/resources/config/config.properties")
,"UTF-8"));
/*使用load方法加载properties文件中的内容到properties对象中*/
properties.load(bufferedReader);
} catch (FileNotFoundException e) {
System.err.println("properties文件未找到");
} catch (IOException e) {
System.err.println("出现IOException");
} finally {
try {
if(null != bufferedReader) {
bufferedReader.close();
}
} catch (IOException e) {
System.err.println("properties文件流关闭出现异常");
}
}
System.out.println("加载properties文件内容完成.......");
System.out.println("properties文件内容:"+properties);
}
/**
* 获取指定key的值,若key不存在,则返回null
* @param key key的值
* @return 返回属性值
*/
public static String getProperty(String key){
if(null == properties) {
loadProps();
}
return properties.getProperty(key);
}
/**
* 获取指定key的值,若获取不到,则返回默认值
* @param key key的值
* @param defaultValue 默认值
* @return 返回属性值
*/
public static String getProperty(String key, String defaultValue) {
if(null == properties) {
loadProps();
}
return properties.getProperty(key, defaultValue);
}
public static void main(String[] args) {
System.out.println(getProperty("redis.ip"));
System.out.println(getProperty("a","默认值"));
}
}