抑制静态初始化(Powermock)

SuppressStaticInitializationFor(Powermock)

我有一个 public class,它有静态变量、静态块和静态函数。我正在测试我的测试仪 class 中的静态函数之一(比如 x),我通过在测试仪 class 的 class 级别(Powermock)使用 @SuppressStaticInitializationFor 来抑制静态块。现在,当我从我的测试人员 运行 Jnunit 测试 class 时,当控制到达上述使用 class.So 的静态变量的函数时,我得到空指针异常,我的问题是 @ SuppressStaticInitializationFor 在 class 中也抑制静态变量的初始化,还是仅限于静态块?感谢任何帮助

@SuppressStaticInitialization 的文档说:-

  • 使用这个注解来抑制静态初始值设定项(构造函数) 一个或多个 classes.

这清楚地表明还没有提到静态初始值设定项和变量。

但你必须注意,你不能传递 class 名称,但你必须在 @SuppressStaticInitialization

的参数中传递 class 的完全限定名称

你需要做

@SuppressStaticInitialization(com.myPackage.Employee)
public class Employee{
      .....
}

你不应该这样做

@SuppressStaticInitialization(Employee.class)
    public class Employee{
          .....
    }

希望你做对了。

静态变量也没有被初始化, 出路是使用 Whitebox class.Steps 你需要执行的是:-

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

希望对您有所帮助!

祝你好运!