Mock InjectMocks ( @Mock 和 @InjectMocks )区别

之前一直对这两个注解的区别不是很明白。

搜到过一篇博客园的文章举例说明了代码行为的区别。后来在stackoverflow上看到一个问答简单明了的解释了这两个注解在定义上的区别:

在此翻译记录一下:

//译文Begin:

@Mock: 创建一个Mock.

@InjectMocks: 创建一个实例,其余用@Mock(或@Spy)注解创建的mock将被注入到用该实例中。

注意:必须使用@RunWith(MockitoJUnitRunner.class) 或 Mockito.initMocks(this)进行mocks的初始化和注入。

 

[java] 
 
  1. @RunWith(MockitoJUnitRunner.class)  
  2. public class Test {  
  3.   
  4.     @InjectMocks  
  5.     private SomeHandler someHandler;  
  6.   
  7.     @Mock  
  8.     private OneDependency oneDependency; // 此mock将被注入到someHandler  
  9.   
  10.     // ...   
  11.   
  12. }  

 

// 译文end.

Credit to the questioner and answerer. 

posted @ 2018-05-07 10:12  ThinkVenus  阅读(1689)  评论(0编辑  收藏  举报