@Mock和@InjectMock这两注解除了名字和使用方式比较像之外,是在功能上无任何可类比性的完全不同的东西。
@Mock:
在Mockito中用于创建mock对象,使用方法如下:
@Mock
private ClassName mockedObject;
上面代码创建了一个名为mockedObject,类型为ClassName的mock对象,该对象所有的方法被置空,根据测试代码逻辑的需要使用。
@InjectMock:
这是一个注入mock对象的操作,参考如下代码:
@Mock
private ClassName mockedObject;
@InjectMock
private TestedClass TestedObj = new TestedClass();
这段代码中,@InjectMock下面声明了一个待测试的对象,若该对象有类型为ClassName的成员变量,@Mock定义的mock对象将会被注入到这个待测试的对象中,即TestedObj的类型为ClassName的成员被直接赋值为mockedObject。