抑制静态初始化(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)
为您想要的任何值,(在您的测试用例中)
- 现在你不会得到空指针异常了。
希望对您有所帮助!
祝你好运!
我有一个 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)
为您想要的任何值,(在您的测试用例中) - 现在你不会得到空指针异常了。
希望对您有所帮助!
祝你好运!