如何为下面的代码编写junit和mockito,是否可以模拟C类?

时间:2019-05-25 06:29:33

标签: java junit mocking mockito

有人可以帮我为下面的代码编写模型吗?

public class B extends A()
{
public void dial()
{
C c =new C();
c.command();
}
}

1 个答案:

答案 0 :(得分:0)

您不能那样做,因为您必须严格使用“真正的” C类。

相反,请向Supplier<C>的构造函数提供Supplier<? extends C>(或更常见的是B):

public class B extends A
{
  private final Supplier<? extends C> cSupplier;

  public B(Supplier<? extends C> cSupplier) {
    this.cSupplier = cSupplier;
  }

  public void dial()
  {
    C c = cSupplier.get();
    c.command();
  }
}

现在您可以传入供应商的实例:

// In production code:
B b = new B(C::new);

// In test code:
B b = new B(() -> mock(C.class));