JMockit可以使用参数构造函数启动模拟对象吗?

时间:2017-01-19 03:27:57

标签: java unit-testing mocking jmockit

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

1 个答案:

答案 0 :(得分:3)

  

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

没有。

将创建具有相同界面模拟。这意味着它将具有相同的public方法,如果测试类位于同一个包中,则它也可以使用相同的protectedpackage private方法。

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

这意味着对于预期由代码(cut)调用的每个方法,并且定义了返回值,您必须配置模拟以便返回一个值切割应在特定的测试中使用。

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

注意

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

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

因为表格

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

将在该特殊情况下提出NullPointerException