前言
本篇文章将说明如何使用PowerMock
对静态方法进行Spy
。关于使用PowerMock
需要引入哪些依赖,请参考PowerMock使用-依赖准备。
正文
一. Spy
静态公共方法
被测试类如下所示。
public class SpyStaticPublicMethod {
public static boolean isTrue() {
return true;
}
}
测试类如下所示。
@RunWith(PowerMockRunner.class)
@PrepareForTest(SpyStaticPublicMethod.class)
public class PowerMockTest {
@Test
public void spyStaticPublic() throws Exception {
PowerMockito.spy(SpyStaticPublicMethod.class);
PowerMockito.doReturn(false).when(SpyStaticPublicMethod.class, "isTrue");
assertThat(SpyStaticPublicMethod.isTrue(), is(false));
}
}
二. Spy
静态私有方法
被测试类如下所示。
public class SpyStaticPrivateMethod {
public static boolean isTrue() {
return returnTrue();
}
private static boolean returnTrue() {
return true;
}
}
测试类如下所示。
@RunWith(PowerMockRunner.class)
@PrepareForTest(SpyStaticPrivateMethod.class)
public class PowerMockTest {
@Test
public void spyStaticPrivate() throws Exception {
PowerMockito.spy(SpyStaticPrivateMethod.class);
PowerMockito.doReturn(false).when(SpyStaticPrivateMethod.class, "returnTrue");
assertThat(SpyStaticPrivateMethod.isTrue(), is(false));
}
}