powermock静态类_PowerMock学习(四)之Mock static的使用

我们编写代码的时候,总会写一些工具类,为了方便调用喜欢使用static关键字来修饰对应方法。

那么现在举例说明,还是准备两个接口,第一个是查询学生总数,第二个是新增学生两个接口,具体示例代码如下:

packagecom.rongrong.powermock.mockstatic;importcom.rongrong.powermock.service.Student;/***@authorrongrong

*@version1.0

* @date 2019/11/23 8:08*/

public classStudentStaticService {/*** 获取学生总数

*@return

*/

public intgetStudentTotal(){returnStudentUtils.getStudent();

}/*** 创建一个学生

*@paramstudent*/

public voidcreateStudent(Student student){

StudentUtils.createStudent(student);

}

}

接着我们再来看看这个静态工具类StudentUtils,具体代码示例如下:

packagecom.rongrong.powermock.mockstatic;importcom.rongrong.powermock.service.Student;/***@authorrongrong

*@version1.0

* @date 2019/11/23 7:38*/

public classStudentUtils {/*** 获取学生总数

*@return

*/

public static intgetStudent(){throw newUnsupportedOperationException();

}/*** 创建一个学生

*@paramstudent*/

public static voidcreateStudent(Student student){throw newUnsupportedOperationException();

}

}

接下来我们用传统方式,来做单元测试,示例代码如下:

@Testpublic voidtestGetStudnetTotal(){

StudentStaticService staticService= newStudentStaticService();int studentTotal =staticService.getStudentTotal();

assertEquals(studentTotal,10);

}

@Testpublic voidtestCreateStudent(){

StudentStaticService staticService= newStudentStaticService();

staticService.createStudent(newStudent());

assertTrue(true);

}

接着运行下测试用例,结果肯定报错了,为什么报错,这里就不再细说了,参考之前文章,报错,如下图所示:

dcbe82362d1a82ad6de348866a78cc8e.png

接下来我们使用powermock来进行测试,具体示例代码如下:

@Testpublic voidtestGetStudentWithMock(){//先mock工具类对象

PowerMockito.mockStatic(StudentUtils.class);//模拟静态类调用

PowerMockito.when(StudentUtils.getStudent()).thenReturn(10);//构建service

StudentStaticService service = newStudentStaticService();int studentTotal =service.getStudentTotal();

assertEquals(10,studentTotal);

}

@Testpublic voidtestCreateStudentWithMock(){//先模拟静态工具类

PowerMockito.mockStatic(StudentUtils.class);//模拟调用

PowerMockito.doNothing().when(StudentUtils.class);//构建service

StudentStaticService service = newStudentStaticService();

Student student= newStudent();

service.createStudent(student);//这里用powermock来验证,而不是mock,更体现了powermock的强大

PowerMockito.verifyStatic();

}

再次运行,测试通过,如下图所示:

436d87cf313da1ae4cefa88cfaaccbc6.png

运行之前先让powermock为我们准备了StudentUtils工具类,而且采用mockstatic的方法,最后我们用powermock.verifyStatic()验证,而不是mock,更体现了powermock的强大。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值