powermock mock私有方法

1 篇文章 0 订阅

单单用来自Mockito的@InjectMocks了会报错

还要再套一层PowerMockito的spy

public class World {

    private Banana banana = new Banana();
    public Banana getBanana() {
        return banana;
    }    
    
    private String secretGreeting(String s){
        return "i am secretly saying: " + s;
    }

    public String getLog(String s){
        return secretGreeting(s);
    }
}
@PrepareForTest({MyUtil.class, World.class})
@RunWith(PowerMockRunner.class)
public class WordTest2 {
    @Mock
    private Banana banana;
    
	// 叠中叠
    @InjectMocks
    private World world;

    @Test
    public void test1() throws Exception {
        // 用的是powermock的spy
        // World world = PowerMockito.spy(new World());
        world = PowerMockito.spy(world);
        
        // mock私有方法
        // 先when再thenReturn也行
        PowerMockito.doReturn("11111").when(world, "secretGreeting", "pp");
        System.out.println(world.getLog("pp"));
        
        // 自动注入仍然成功
        PowerMockito.when(banana.shout(Mockito.anyString())).thenReturn("22222");
        System.out.println(world.getBanana().shout("wow"));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值