首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SuppressStaticInitializationFor(Powermock)

SuppressStaticInitializationFor(Powermock)
EN

Stack Overflow用户
提问于 2015-04-16 11:54:51
回答 1查看 10.5K关注 0票数 3

我有一个公共类,它有静态变量、静态块和静态函数。我正在测试我的tester类中的一个静态函数(比如x),我在tester类中的类级别(Powermock)使用@SuppressStaticInitializationFor来抑制静态块。现在,当我从我的测试类运行Jnunit测试时,当控制到达上面的函数时,我得到了空指针异常,也就是使用class.So的静态变量。我的问题是,@SuppressStaticInitializationFor在类中也抑制静态变量的初始化,还是它只限于静态块?任何帮助我们都将不胜感激

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-16 20:00:01

@SuppressStaticInitialization的文档说:-

  • 使用此批注取消一个或多个类的静态初始值设定项(构造函数)。

这清楚地表明静态初始化器和变量没有被提及。

但您必须注意,不能传递类名,而必须在@SuppressStaticInitialization的参数中传递类的完全限定名

你需要做的是

代码语言:javascript
复制
@SuppressStaticInitialization(com.myPackage.Employee)
public class Employee{
      .....
}

你不应该这么做

代码语言:javascript
复制
@SuppressStaticInitialization(Employee.class)
    public class Employee{
          .....
    }

希望你这样做是正确的。

静态变量也未初始化,解决此问题的方法是使用您需要执行的Whitebox class.Steps:-

  • 使用方法Whitebox.setInternalState(ClassName.class,fieldName,fieldValue) to任意你想要的值,(在你的测试用例中)
  • 现在你不会得到空指针异常。

希望这能有所帮助!

祝好运!

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29665052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档