PowerMock--Mock静态方法

1 PowerMock静态方法

写单元测试时,经常会遇到测试方法体内调用了某些工具类的静态方法的情况,而这些静态方法一般是读取配置中心里的文件数据,或者是一些其他涉及到需要启动项目的操作(往往这些操作会造成Mock单元测试的不彻底,有些流水线扫描工具可能会认定单元测试没有覆盖的情况)。因此,需要将一些静态方法mock掉,只要调用了该静态方法,就返回我们预设好的一些值。

2 PowerMock使用的前提条件

	<dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito2</artifactId>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
    </dependency>

3 创建单元测试类

几点注意:
1 @PrepareForTest注解和@RunWith注解是结合使用的,
2 不要单独使用它们中的任何一个,否则不起作用。
3 将需要mock的静态方法类名写在这里,如有多个,以逗号分割

mock后,调用该静态方法,传入任何String类型,都会返回 “成功”
假设有一个类ATest的getObect()方法中调用StaticFunctionTest1中的静态方法getValue(String para),那么现在mock后,就会返回固定值 “成功”

@RunWith(PowerMockRunner.class) 
@PowerMockIgnore({"javax.script.*", "javax.management.*", "org.w3c.dom.*", "org.apache.log4j.*", "org.xml.sax.*", "javax.xml.*"})
@PrepareForTest({StaticFunctionTest1.classStaticFunctionTest2.class})  //
public class UnitTest {
    @Test
    public void Test1(){
    	PowerMockito.mockStatic(StaticFunctionTest1.class);
		PowerMockito.when(StaticFunctionTest1.getValue(Mockito.anyString())).thenReturn("成功"); 
		ATest test = new ATest();
		test.getObect();
	}
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值