powermockito测试私有方法_Spock代码讲解 静态方法测试

本文是Spock系列的第七篇,讲解如何在Spock中使用PowerMockito测试静态方法。通过@PowerMockRunnerDelegate(Sputnik.class)注解,结合@SuppressStaticInitializationFor避免静态初始化,并在setup()中使用PowerMockito.mockStatic进行静态方法的mock设置。文章还提到,如果不需模拟静态方法,使用Spock的Mock()即可,而PowerMockito由于其编译期字节码修改的原理,可能增加测试时长。
摘要由CSDN通过智能技术生成

这是Spock系列的第七篇文章,本篇主要讲解Spock如何扩展第三方power mock对静态方法进行测试

实现原理

前面的文章讲到Spock的单测代码是继承自Specification基类,而Specification又是基于Junit的注解@RunWith()实现的,代码如下:

@RunWith(Sputnik.class)
@SuppressWarnings("UnusedDeclaration")
public abstract class Specification extends MockingApi {

powermock的PowerMockRunner也是继承自Junit,所以使用powermock的@PowerMockRunnerDelegate()注解可以指定Spock的父类Sputnik去代理运行power mock,这样就可以在Spock里使用powermock去模拟静态方法、final方法、私有方法等

其实Spock自带的GroovyMock可以对groovy文件的静态方法mock,但对Java代码的支持不完整,只能mock当前Java类的静态方法,官方给出的解释如下:

(http://spockframework.org/spock/docs/1.3/all_in_one.html#_mocking_static_methods)

641d4e98905af79a0b8c99c3697ef888.png

因为我们项目中存在很多调用静态方法的代码,现阶段考虑重构业务代码的成本过高,所以这里使用扩展power mock的方式测试静态方法

Spock 代理 power mock

先看下需要测试的业务代码示例:

public UserVO getUserByIdStatic(int uid){
    
    List user
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值