如何自动初始化一个调用InetAddress.getLocalHost()的静态变量?

时间:2013-12-03 11:21:09

标签: java junit

遵循这个简短的教程http://www.rgagnon.com/javadetails/java-0095.html我试图让我的客户 IP地址

与教程的唯一区别是我希望我的IP地址放在静态变量中,所以我按以下方式进行:

private static InetAddress thisIp = InetAddress.getLocalHost();

但Eclipse给出了以下错误消息:未处理的异常类型UnknownHostException

所以,我认为,问题在于我无法调用此代码:

InetAddress.getLocalHost();

进入静态变量,但我首先声明静态变量,然后将其初始化为每个使用它的方法。

我在JUnit测试中需要它的问题,这非常糟糕,每次都将它初始化为所有@test方法!!!

那么,我可以做些什么来避免在每个测试方法中初始化它?还有一些其他方法只能初始化一次吗?我可以创建一个初始化方法,在运行我的测试类时会自动执行吗?怎么样?

TNX

安德烈

2 个答案:

答案 0 :(得分:5)

尝试初始化静态块,

private static InetAddress thisIp;

static{
    try {
        thisIp  = InetAddress.getLocalHost();
    } catch (UnknownHostException ex) {

    }
}

答案 1 :(得分:2)

您可以使用静态初始化块:

class YourClass {

    private static InetAddress thisIp;

    static {
      try {
        thisIp = InetAddress.getLocalHost();
      } catch(Exception ex) {
        Logger.log(ex);
      } finally {
        ...
      }
    }
   ...
}

除了任何方法之外,该块可以在类中的任何位置进行。