当我将@Mocked注释放在只有带参数的构造函数的对象上时,这个对象会正确启动吗?
答案 0 :(得分:3)
当我将@Mocked注释放在只有带参数的构造函数的对象上时,这个对象会正确启动吗?
没有。
将创建具有相同界面的模拟。这意味着它将具有相同的public
方法,如果测试类位于同一个包中,则它也可以使用相同的protected
和package private
方法。
这个模拟将不调用模拟类的真实方法(除非你这样配置)。
这意味着对于预期由代码(cut)调用的每个方法,并且定义了返回值,您必须配置模拟以便返回一个值切割应在特定的测试中使用。
这些可配置的返回值和模拟的验证功能是我们使用模拟框架的原因。
如果要模拟对访问由模拟类构造函数初始化的成员的方法的调用,则必须使用表单
doReturn(SOME_VALUE).when(mock).methodToBeCalledByYourCut();
因为表格
when(mock.methodToBeCalledByYourCut()).thenReturn(SOME_VALUE);
将在该特殊情况下提出NullPointerException
。