无法使用mockito模拟私有方法 [英] Can not mock the private method with mockito

查看:1100
本文介绍了无法使用mockito模拟私有方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用power mockito来模拟一个私有方法,在阅读这篇文章后我得到了一些想法并且我遵循相同的结构:

I am trying to mock a private method with power mockito, after reading this post I got some idea and I followed the same structure:

示例

这是我的班级:

public class test(){
  private long verifyMarketEligibilityAndGetOfferDeliveryCalendar(long id)
  {
    some lins of code for connectiong to db
  }
  public long createOffer(long id){

    return verifyMarketEligibilityAndGetOfferDeliveryCalendar(id);
  }

}

这是我的模拟测试:

test classUnderTest = PowerMockito.spy(new test());
        PowerMockito.doReturn(10).when(classUnderTest,
                "verifyMarketEligibilityAndGetOfferDeliveryCalendar", 10l);
        classUnderTest.createOffer(10);

现在我希望在调用createoffer之后,verifyMarketEligibilityAndGetOfferDeliveryCalendar不会调用而是返回10号但是由于某种原因程序开始执行verifyMarketEligibilityAndGetOfferDeliveryCalendar类以及因此与db相关的代码。

Now I expect that after calling createoffer, verifyMarketEligibilityAndGetOfferDeliveryCalendar does not invoke and instead number 10 returns but for some reason program start executing the verifyMarketEligibilityAndGetOfferDeliveryCalendar class and consequently db related code .

任何人都可以帮忙吗?

Can anyone help?

推荐答案

PowerMockito需要声明这些注释。

PowerMockito needs those annotations to be declared.

@RunWith(PowerMockRunner.class)
@PrepareForTest(classUnderTest.class)

这篇关于无法使用mockito模拟私有方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆