队
我们正在研究用例,我们只想模拟静态块而不是静态块 类中的变量
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");
}
};
}
答案 0 :(得分:1)
您假设static
字段与static
块的执行分开初始化,而实际上Java编译器将所有字节码放入类初始化中一个单&#34;方法&#34;签名void <clinit>()
。