jmockit如何只禁用静态块而不是静态变量

时间:2014-08-19 14:53:27

标签: jmockit

我们正在研究用例,我们只想模拟静态块而不是静态块 类中的变量

e.g。

 public class BusinessClassOne
 {  
   public static final BusinessClassTwo businessTwo = new BusinessClassTwo();

   static
   {
    Initalize the services here

   }


 }

问题是我们如何在jmockit中通常只模拟静态块并初始化静态变量。

我们在下面尝试过,似乎并没有将businessTwo 静态最终变量初始化。

请注意,这是遗留代码,我们不想更改它。

@Before
 public void staticInitializers()
 {

 new MockUp<BusinessClassOne>() {
      @Mock
      void $clinit()
      {
          System.out.println("Static is bypassed");
      }
   };

  }

1 个答案:

答案 0 :(得分:1)

您假设static字段与static块的执行分开初始化,而实际上Java编译器将所有字节码放入类初始化中一个&#34;方法&#34;签名void <clinit>()