109

我知道如何使用 PowerMock 从类中模拟静态方法。
但我想使用 JUnit 和 PowerMock 在测试类中模拟来自多个类的静态方法。

谁能告诉我是否有可能做到这一点以及如何做到这一点?

4

4 回答 4

268

只需@PrepareForTest({Class1.class,Class2.class})为多个课程做。

于 2012-04-26T08:19:34.737 回答
13
@Test
 @PrepareForTest({Class1.class, Class2.class})
 public final void handleScript() throws Exception {
    PowerMockito.mockStatic(Class1.class);
    PowerMockito.mockStatic(Class2.class);

ETC...

于 2014-10-14T08:37:47.083 回答
3

如果您使用的是 kotlin,则语法是这样的

@PrepareForTest(ClassA::class, ClassB::class)

于 2019-12-25T10:27:12.550 回答
2

在带有 powermock/junit 的 java 中, 使用@PrepareForTest({})与数组 ( ) 一样多的静态类{}

@RunWith(PowerMockRunner.class)
@PrepareForTest({XmlConverterA.class, XmlConverterB.class})
class TransfersServiceExceptionSpec {

}

在 scala/junit 中使用了 powermock,因为 scalatest 没有与 powermock 集成。

@RunWith(classOf[PowerMockRunner])
@PrepareForTest(Array(classOf[XmlConverterA], classOf[XmlConverterB]))
class TransfersServiceExceptionSpec {

  @Test
  def test() {
  }
}
于 2016-11-02T19:18:58.500 回答