获取jUnit:s @BeforeClass的静态字段

时间:2012-12-11 18:00:53

标签: java static junit load-order

围绕

的经典问题有什么办法吗?
public class SomeClass implements SomeOtherInterface {

  private static SomeInterface some;

  public SomeClass(SomeInterface someInterface) {
    some = someInterface;
  }

  @BeforeClass
  public static void doSomethingWithInterface() {
    System.out.println(someInterface.someValue()); // prints null
  }
}

除了交换

System.out.println(someInterface.someValue()); // prints null

System.out.println(SomeInterface.someValue());

如果someValue是静态的。问题是这是一个框架(扩展),并且用户将提供SomeInterface的实现。

1 个答案:

答案 0 :(得分:1)

您只需在构造函数中设置static成员的值。因此,在没有该类的至少一个对象之前,您将无法访问someValue()。在Junit中,@Before注释可能很有用,它在每次测试之前执行,而不是static