我有一个公共类,它有静态变量、静态块和静态函数。我正在测试我的tester类中的一个静态函数(比如x),我在tester类中的类级别(Powermock)使用@SuppressStaticInitializationFor来抑制静态块。现在,当我从我的测试类运行Jnunit测试时,当控制到达上面的函数时,我得到了空指针异常,也就是使用class.So的静态变量。我的问题是,@SuppressStaticInitializationFor在类中也抑制静态变量的初始化,还是它只限于静态块?任何帮助我们都将不胜感激
发布于 2015-04-16 20:00:01
@SuppressStaticInitialization的文档说:-
这清楚地表明静态初始化器和变量没有被提及。
但您必须注意,不能传递类名,而必须在@SuppressStaticInitialization的参数中传递类的完全限定名
你需要做的是
@SuppressStaticInitialization(com.myPackage.Employee)
public class Employee{
.....
}你不应该这么做
@SuppressStaticInitialization(Employee.class)
public class Employee{
.....
}希望你这样做是正确的。
静态变量也未初始化,解决此问题的方法是使用您需要执行的Whitebox class.Steps:-
Whitebox.setInternalState(ClassName.class,fieldName,fieldValue) to任意你想要的值,(在你的测试用例中)希望这能有所帮助!
祝好运!
https://stackoverflow.com/questions/29665052
复制相似问题