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

34

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

除了具有静态方法的类之外,还应该放置哪些内容?


3
请查看此处的文档:https://github.com/powermock/powermock/wiki/Mockito - Nkosi
@GhostCat 我认为你需要在那里传递ClassUnderTesting.class,如果你想要模拟这个类的私有方法调用。此外,你还需要将Spy放在InjectMocks之上,而InjectMocks又在ClassUnderTesting初始化之上。 - Ernesto
1个回答

58

这个注解告诉PowerMock(ito),列出的类需要在字节码级别上进行操作。

你需要“为测试做准备”,对你想要的所有这些类X进行准备,以便:

  • 模拟静态方法(在X上)
  • 控制另一个类X中使用的new()的调用
  • 控制私有方法(使用spy
    PowerMockito.when(spy, "privateMethodNameAsString").then...

换句话说:

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

3
除此之外,它还可以让你执行诸如模拟枚举类型等操作。 - saran3h
是的,但这是我不喜欢做的事情。如果我需要“模拟”这样的东西,我的枚举实现了一些我可以模拟的接口(无需使用PowerMock)。 - GhostCat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接