【问题标题】:Can not mock the private method with mockito不能用 mockito 模拟私有方法
【发布时间】:2016-12-07 16:33:18
【问题描述】:

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

example

这是我的课:

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 相关代码。

有人可以帮忙吗?

【问题讨论】:

  • 你的测试课上有@PrepareForTest吗?
  • OOOPPPPS 是的,这是一个多么愚蠢的错误,我希望你已经添加作为答案然后我可以接受它
  • 你比我更需要一些分数,添加你的“我想通了”的答案并接受它:o

标签: java unit-testing powermockito


【解决方案1】:

PowerMockito 需要声明这些注释。

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

【讨论】:

    猜你喜欢
    • 2015-12-13
    • 2014-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多