PowerMock 探索
越用jmockit越觉得powermock的繁杂,建议大家尝试一下jmockit 这个jmockit与junit有版本之间的对应关系,大家可以在maven网站上和jmockit官网上研究一下
jmockito中文网,这是一个大佬自学成才后自己建的站,写的很透,非常适合新手学习http://jmockit.cn/index.htm
jmockit 官网 http://jmockit.github.io/index.html
jmockit maven 页面 https://mvnrepository.com/artifact/org.jmockit/jmockit
powermock的用法:
抑制@Spy注解下要测试的某一个方法
suppress(method(GenerateReportsService.class, "getFieldValueByClmRiskRpt"));
在将要测试的类中设置私有属性
field(AAA.class, "aaafilename").set(aaa, "Imma AAA");
从一个执行后的私有方法的java类获得私有属性
workBook=(HSSFWorkbook) field(AAA.class, "workBook").get(aaa);
模拟私有方法
返回值 mock实例 私有方法 参数
PowerMockito.doReturn("5555").when(aaaa,"getaaaaa",Mockito.anyObject(),Mockito.anyString());
返回值空处理 原址https://blog.csdn.net/flysun3344/article/details/52065492
1.当mock一个对象,且执行此对象中的方法有返回值时,使用下面的方法:
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
对象= mock (类名.class);
when (对象.方法 (参数)).thenReturn (方法的返回值);
2.当mock一个对象,且执行此对象中的方法没有返回值时,使用下面的方法:
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
类名 对象 = Mockito.mock(类名.class);
Mockito.doAnswer(new Answer<Object>() {
public Object answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
return "called with arguments: " + args;
}
}).when(对象).方法名();