0

我需要使用设置一些全局变量,这些变量将被一些类使用。

我无法从属性文件中分配静态变量。

我想如何调用变量是这样的: 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;
}


   }
4

3 回答 3

4

我不确定你在这里问什么,但你提供的代码不应该编译。代替

private static Properties testProperties;
testProperties = loadProperties();

private static final Properties testProperties = loadProperties();

更新,又发现一个bug。您还必须更改方法签名loadProperties

private static final Properties loadProperties() throws IOException {...}

           ^     ^
于 2012-11-03T08:41:31.937 回答
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...
    }
}
于 2012-11-03T08:50:49.423 回答
0

我认为你应该这样做:

首先,将您的构造函数签名设为私有。其次,将您的 loadProperties() 放入静态块。第三,你应该把你所有的财产都私有化。

于 2012-11-03T09:01:08.097 回答