公司的代码都要设计到代码测试的覆盖率的问题,简单的测试工作还是可以的但是在处理私有方法的时候以前的都是直接测到方法内存,凭空多出了好多代码量。
这里找到了一中比较巧妙的方法感觉还不错。
代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package powermock;
import java.util.Random;
public class CodeWithPrivateMethod {
public void meaningfulpublicAPI(){
throw new RuntimeException("Duang duang");
}
private boolean doTheGamble(String whatever,int binary){
Random random = new Random(System.nanoTime());
boolean gamble = random.nextBoolean();
return gamble;
}
}
测试用例:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package powermock;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.powermock.api.mockito.PowerMockito.when;
import static org.powermock.api.support.membermodification.MemberMatcher.method;
@RunWith(PowerMockRunner.class)
@PrepareForTest(CodeWithPrivateMethod.class)
public class CodeWithPrivateMethodTest {
@Test(expected=RuntimeException.class)
public void when_gambling_is_true_when_always_explode() throws Exception{
CodeWithPrivateMethod spy = PowerMockito.spy(new CodeWithPrivateMethod());
when(spy,method(CodeWithPrivateMethod.class,"doTheGamble",String.class,int.class)).withArguments(anyString(),anyInt()).thenReturn(true);
spy.meaningfulpublicAPI();
}
}
这次就做一个标记。方便以后查看记忆。
最后
以上就是难过面包最近收集整理的关于PowerMock私有方法的简单尝试的全部内容,更多相关PowerMock私有方法内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复