我知道如何使用PowerMock来模拟类中静态方法。
但我想在测试类中使用JUnit和PowerMock模拟多个类中的静态方法。
请问有人能告诉我是否可能做到这一点,以及如何做到?
对于多个类,请只需执行 @PrepareForTest({Class1.class,Class2.class})
。
@RunWith(PowerMockRunner.class)
切换到 PowerMockRunner。 - Nikita Barishok@Rule public PowerMockRule rule = new PowerMockRule();
- Aniket Thakur@PrepareForTest(Class1::class, Class2::class)
表示需要为 Class1
和 Class2
进行测试准备。 - Ryhan@PrepareOnlyThisForTest
而不是@PrepareForTest
。后者还会修改超类,这通常是不必要的。 - Leo@Test
@PrepareForTest({Class1.class, Class2.class})
public final void handleScript() throws Exception {
PowerMockito.mockStatic(Class1.class);
PowerMockito.mockStatic(Class2.class);
PowerMock 1.6.5
,在方法级别使用 @PrepareForTest
存在问题(对我来说只能在类级别上工作)。 - Nikita Barishok@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() {
}
}