JUnit初始化静态字段

时间:2014-10-05 09:40:37

标签: java testing junit static

我正在使用JUnit进行单元测试。假设我想测试类B(类B的方法)。假设我们有另一个类A,它是主类(包含main方法)并且有一些protected static个字段。

现在,类B使用类A的一些静态字段。因此,如果我正在测试类B,那么类A的这些静态字段就不存在了。

如何在不执行程序的情况下测试类B(执行类A)?

编辑:我必须澄清一下。假设我们在src / package1 / classA.java中有以下类A:

public classA {
   protected static int field1;
   protected static int field2;

   public static void main(String[] args) {
      // initialize static fields.
   }
}

现在假设我们在同一个包src / package1 / classB.java中有另一个B类。

public ClassB {
       public ClassB() {
            // Do some stuff.
       }

       public void someMethod() {
           // Access of static fields from A.
           classA.field1....
           classA.field2....
       }          
}

现在我在test / package1 / classBTest.java中有一个JUnit测试用于测试类B.但问题是field1和field2没有初始化。

如何在JUnit中手动初始化两个字段classA.field1和classA.field2而不执行A类的主方法?

1 个答案:

答案 0 :(得分:1)

你可以调用classA的主要方法.i.e。 ClassA.main(somestrArray),它应该进行初始化。

但是如果您不想这样做,那么您可以在与原始类相同的包中创建junit测试,并且您将能够访问受保护的变量。 ClassA.field1 = 1;等等,它不必在同一个项目中,只是包名应该相同。

如果那不行,那么你需要重构你的ClassA以允许这种情况.i.e。有一个执行init等的方法。