0
public class TargetObjectWrapper extends TargetObject {
   @Mock SomeObject myMockOfSomeObject;
   @InjectMocks TargetObject targetObject;

   public TargetObjectWrapper(){
       this.targetObject = mock(originalObject);

       //doAnswer(...).when(...) methods
   } 

   //Override other methods of TargetObject
 }

我正在尝试将特定的模拟对象注入到targetObject. 我知道 targetObject 将始终具有具有此特定签名的字段。

这一切都有效,我可以成功注入myMockOfSomeObject,并适当地重定向调用。

但是当 TargetObject 类包含像下面这个简单示例这样的其他字段时,当我将请求传递给原始对象时,该字段会被清空并导致空指针异常。

Log log = LogFactory.getLog(getClass());

如何避免导致其他对象获取空值?特别是如果其他变量可能会因对象而异(此代码应该是通用的)?

4

2 回答 2

1

在这种情况下,这似乎spy(..)不是mock(...)正确的方法。虽然我还没有测试过它是否注入了我的模拟对象,但我相信它确实注入了。

于 2013-02-17T12:42:53.807 回答
0

向您的测试类添加@RunWith(MockitoJUnitRunner.class)注释。

于 2013-07-27T02:24:22.500 回答