【问题标题】:Mock static methods [duplicate]模拟静态方法[重复]
【发布时间】:2018-03-21 01:16:18
【问题描述】:

我在一个类中有一个静态方法。该方法不是最终的。我不断收到 when() 需要一个参数,该参数必须是“模拟方法调用”错误。下面是我的代码。

mockStatic(HomefeedExperimentUtils.class);

when(HomefeedExperimentUtils.getGroupAndActivateExperiment(
    "link_stock_signal_filter_exp")).thenReturn(
    "treatment");

我也试过了:

HomefeedExperimentUtils mock = org.mockito.Mockito.mock(HomefeedExperimentUtils.class);

when(mock.getGroupAndActivateExperiment(
    "link_stock_signal_filter_exp")).thenReturn(
    "treatment");

任何帮助都将不胜感激。

谢谢!

【问题讨论】:

  • 不要模拟静态。测试公开行为,如果静态是公开的,直接测试。
  • 首先不要使用static 方法。它们使您的代码不灵活且难以重用(正如您使用模拟的问题所显示的那样)。不:没有规定实用程序类必须具有静态方法...

标签: java mocking mockito


【解决方案1】:

Mockito 无法执行静态模拟,请使用 PowerMock 扩展其功能并实现这一目标。

https://github.com/powermock/powermock/wiki

【讨论】:

  • 但在使用 PowerMock 放弃糟糕的设计之前,请从被测方法中删除 static 关键字!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多