当我将 @Mocked 注解放在一个只有带参数的构造函数的对象上时,该对象会正确启动吗?
最佳答案
When I put the @Mocked annotation on a object which has only constructor with parameters, will this object be initiated rightly?
没有。
将创建具有相同界面的模拟。这意味着它将具有相同的 public
方法,并且如果测试类位于同一个包中,它也将具有相同的 protected
和 package private
方法可访问。
此模拟将不会调用模拟类的真实方法(除非您如此配置)。
这意味着,对于预计由您的测试代码调用的每个方法(剪切)并且定义了返回值,您必须配置您的模拟,以便返回您的值cut 应在该特定测试中使用。
这种可配置的返回值和模拟的验证功能是我们使用模拟框架的原因。
<小时/>注意
如果您想模拟对访问由模拟类构造函数初始化的成员的方法的调用,您必须使用以下形式
doReturn(SOME_VALUE).when(mock).methodToBeCalledByYourCut();
因为形式
when(mock.methodToBeCalledByYourCut()).thenReturn(SOME_VALUE);
在这种特殊情况下将引发 NullPointerException
。
关于java - Mockito 可以使用参数构造函数初始化模拟对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41733199/