我需要设置一些全局变量,这些变量将由几个类使用。
我在从属性文件中分配静态变量时遇到了麻烦。
我想如何调用变量是这样的:String url = WebdriverConfiguration.getBaseUrl();
public class WebDriverConfiguration
{
private static Properties testProperties;
private static String instaceUrl;
testProperties = loadProperties();
public static final String DEFAULT_BASEURL = testProperties.getProperty("confluence.base.url","");
private static final int DEFAULT_HTTP_PORT = 8080;
private static final String DEFAULT_CONTEXT_PATH = "/";
public static final String TEST_SPACE_KEY = "SMOKE";
public static final String TEST_PAGE = "XXX";
private static final String BASE_URL = System.getProperty("baseurl", DEFAULT_BASEURL);
public static String getBaseUrl()
{
return BASE_URL;
}
private Properties loadProperties() throws IOException
{
InputStream testPropertiesInput = getClass().getClassLoader().getResourceAsStream("webtester.properties");
Properties testProperties = new Properties();
if (null != testPropertiesInput)
{
try
{
testProperties.load(testPropertiesInput);
}
finally
{
IOUtils.closeQuietly(testPropertiesInput);
}
}
return testProperties;
}
}
答案 0 :(得分:4)
我不确定你在这里问的是什么,但你提供的代码不应该编译。取代
private static Properties testProperties;
testProperties = loadProperties();
与
private static final Properties testProperties = loadProperties();
更新,发现另一个bug。您还必须更改loadProperties
的方法签名:
private static final Properties loadProperties() throws IOException {...}
^ ^
答案 1 :(得分:1)
使用问题中的当前设计,需要进行以下更改:
public class WebDriverConfiguration {
private static Properties testProperties = loadProperties();
//...snip...
private static Properties loadProperties() { //must be static and can not throw a checked exception
//...snip...
}
}
答案 2 :(得分:0)
我认为你应该这样做:
首先,将构造函数签名设为private。 其次,将您的负载Properties()置于静态块。 第三,你应该把你所有的财产都私有。