【问题标题】:How to mock Guava Maps.newConcurrentMap() [closed]如何模拟 Guava Maps.newConcurrentMap() [关闭]
【发布时间】:2016-07-11 12:54:59
【问题描述】:

如何模拟这个?

public class MyClass {

}

【问题讨论】:

  • 你为什么要模拟这样的课程?
  • 你不能模拟静态方法,至少在 java 中是这样。
  • @ArthurEirich 是的,你可以,例如PowerMock.
  • @FrankPavageau 我知道有人会指出这一点,但我真的想阻止 OP 开始使用 PowerMock。
  • @ArthurEirich 那么就这么说吧:)。我们仍然不知道 OP 为什么要模拟 ConcurrentHashMap,这可能是另一个问题的错误答案。

标签: java testing junit mocking guava


【解决方案1】:

使用dependency injection:

public class MyClass {
  private Map<String, MyClassModel> list;  // Don't initialize.

  public MyClass(Map<String, MyClassModel> list) { // Inject to ctor.
    this.list = list;
  }
}

【讨论】:

    【解决方案2】:
    long expectedId = 42;
    
    ServiceRegistartor tested = new ServiceRegistartor();
    
    mockStatic(IdGenerator.class);
    
    expect(IdGenerator.generateNewId()).andReturn(expectedId);
    
    replay(IdGenerator.class);
    
    long actualId = tested.registerService(new Object());
    
    verify(IdGenerator.class);
    
    assertEquals(expectedId, actualId);
    

    【讨论】:

    • 那是什么(自我)答案?它只是 PowerMock wiki 的未注明出处的副本/粘贴,甚至不适合匹配问题。投反对票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 2011-07-27
    • 1970-01-01
    • 2012-10-28
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多