Mock利器:PowerMock

2023-01-05,,

powerMock不仅支持接口mock,final类、静态类、静态方法、私有方法都支持mock,还是很强大的;

1.gradle引用:

myonlycompile('org.powermock:powermock-module-junit4:1.6.4')
myonlycompile('org.powermock:powermock-api-mockito:1.6.4')

2.测试代码

@RunWith(PowerMockRunner.class)
@PrepareForTest(mockTest.FinalUser.class)
public class mockTest {
@Test
public void testMockInterface() {
IService svc = PowerMockito.mock(IService.class);
PowerMockito.when(svc.getMsg("aa")).thenReturn("my name is aa"); assertEquals("my name is aa", svc.getMsg("aa"));
} @Test
public void testMockClass() {
User user = PowerMockito.mock(User.class);
PowerMockito.when(user.getCount()).thenReturn(5);
assertEquals(5, user.getCount());
} @Test
public void testMockFinalClass() {
FinalUser user = PowerMockito.mock(FinalUser.class);
PowerMockito.when(user.getCount()).thenReturn(5);
assertEquals(5, user.getCount()); PowerMockito.when(user.getNum()).thenReturn(8);
assertEquals(8, user.getNum());
} @Test
public void testMockStaticClass() {
PowerMockito.mockStatic(FinalUser.class);
PowerMockito.when(FinalUser.getName()).thenReturn("MY");
assertEquals("MY", FinalUser.getName());
} static interface IService {
String getMsg(String msg); void addMsg(String msg);
} static class User {
private String name; public int getCount() {
throw new NotImplementedException();
}
} static final class FinalUser {
private String name; public static String getName() {
throw new NotImplementedException();
} public int getCount() {
throw new NotImplementedException();
} private int getNum(){
throw new NotImplementedException();
}
}
}

如果是静态类、方法、final类、私有方法的需要加上

@RunWith(PowerMockRunner.class)
@PrepareForTest(mockTest.FinalUser.class)

Mock利器:PowerMock的相关教程结束。

《Mock利器:PowerMock.doc》

下载本文的Word格式文档,以方便收藏与打印。