Mockito 可以使用参数构造函数初始化模拟对象吗?

Can JMockit initiate mock objects with argument constructor?

当我把@Mocked 注解放在一个只有带参数的构造函数的对象上时,这个对象会被正确启动吗?

When I put the @Mocked annotation on a object which has only constructor with parameters, will this object be initiated rightly?

没有。

将创建一个具有相同接口mock。这意味着它将具有相同的 public 方法,如果测试 class 在同一个包中,它也将具有相同的 protectedpackage private 可访问方法。

这个模拟将不会调用模拟class的真实方法(除非你这样配置)。

这意味着对于每个预期由您的 测试中的代码调用的方法 (剪切)并且定义了 return 值,您必须配置你的模拟,所以这是 returns 一个值,你的切割应该在那个特定的测试中使用。

这种可配置的 return 值和模拟的 验证 功能是我们使用模拟框架的原因。


关注

如果你想模拟对访问由模拟的classes构造函数初始化的成员的方法的调用,你必须使用表单

doReturn(SOME_VALUE).when(mock).methodToBeCalledByYourCut();

因为表格

 when(mock.methodToBeCalledByYourCut()).thenReturn(SOME_VALUE);

在这种特殊情况下会引发 NullPointerException