之前一直对这两个注解的区别不是很明白。
搜到过一篇博客园的文章举例说明了代码行为的区别。后来在stackoverflow上看到一个问答简单明了的解释了这两个注解在定义上的区别:
在此翻译记录一下:
//译文Begin:
@Mock: 创建一个Mock.
@InjectMocks: 创建一个实例,其余用@Mock(或@Spy)注解创建的mock将被注入到用该实例中。
注意:必须使用@RunWith(MockitoJUnitRunner.class)
或 Mockito.initMocks(this)
进行mocks的初始化和注入。
- @RunWith(MockitoJUnitRunner.class)
- public class Test {
- @InjectMocks
- private SomeHandler someHandler;
- @Mock
- private OneDependency oneDependency; // 此mock将被注入到someHandler
- // ...
- }
// 译文end.
Credit to the questioner and answerer.