写Junit,当遇到数据库调用,文件操作等耗时的方法,或者接口不可用的时候,通常需要mock或者spy这个方法的调用。
Powermockto的强大之处,在于它可以应用于静态,私有等方法。
下面讲解一下这两种方式如何应用于Static方法。
Mock Static
Junit最常用的方式就是Mock,mock会导致所有的静态方法都被stub,导致方法默认返回null(对象),0(数字)或者false(boolean)。
下面是Mock的一个例子
PowerMockito.mockStatic(XXCommonUtils.class);
PowerMockito.mockStatic(XXUtils.class);
XXUserInfo userInfo = new XXUserInfo();
userInfo.setUserid("userId1001");
PowerMockito.when(XXCommonUtils.getUserInfo()).thenReturn(userInfo);
PowerMockito.when(XXUtils.createErrorList("XX0024", "DATE1"))
.then(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
List<ResErrors> arg0 = (List<ResErrors>) args[0];