PowerMock 中的@PrepareForTest 到底是什么意思?

What does @PrepareForTest in PowerMock really mean?

PowerMockito 中的注解 @PrepareForTest 到底是什么意思?

除了具有静态方法的 类 之外应该放什么?

该注释告诉 PowerMock(ito) 列出的 classes 需要在字节码级别上进行操作。

你需要 "prepare for test" 所有这些 class 你想要的 X

  • 模拟一个 static 方法(在 X 上)
  • 控制对另一个 class X
  • 中使用的 new() 的调用
  • 获得对私有方法的控制(你使用 spy
    PowerMockito.when(spy, "privateMethodNameAsString").then...

换句话说:

  • 要模拟 X.doStatic(),您必须准备 class X。
  • 要控制 new Y(...),您必须准备 包含 new 语句的 class X。