Powermockito之static方法的Mock和Spy

写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() {
					@Override
					public Object answer(InvocationOnMock invocation) throws Throwable {
						Object[] args = invocation.getArguments();
						List arg0 = (List) args[0];
						arg0.setErrCode("xxcode1");
						return arg0;

					}
				});
 
  

Spy Static

Spy很少用,但是也极其强大,有的时候,例如有两个静态方法,如果我只想stub其中之一,这个时候Spy就该上场了。它的强大之处就在于可以部分mock。
上例子。

	PowerMockito.spy(XXUtils.class);
	PowerMockito.doReturn("Message1").when(XXUtils.class,"getMessage",Mockito.anyString());

你可能感兴趣的:(Powermockito之static方法的Mock和Spy)