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(对象).方法名();

posted @ 2019-04-26 11:45  大哥超帅  阅读(1105)  评论(0编辑  收藏  举报