当我把@Mocked注释放在一个只有带参数的构造函数的对象上时,这个对象会正确启动吗?
当我把@Mocked注释放在一个只有带参数的构造函数的对象上时,这个对象会正确启动吗?
否。
将创建具有相同接口的模拟。这意味着它将具有相同的public
方法,并且如果测试类在同一个包中,它也将具有可访问的相同protected
和package private
方法。
这个mock不会调用mock类的实际方法(除非您这样配置它)。
这意味着,对于被测试(cut)中的代码预期调用的、并且定义了返回值的每个方法,您必须配置mock,以便它返回您的cut在特定测试中使用的值。
这种可配置的返回值和mock的验证功能是我们使用mock框架的原因。
注意
如果您想模拟对访问由模拟类构造函数初始化的成员的方法的调用,则必须使用格式
doReturn(SOME_VALUE).when(mock).methodToBeCalledByYourCut();
因为表单
when(mock.methodToBeCalledByYourCut()).thenReturn(SOME_VALUE);
将在该特殊情况下引发CCD_ 4。