之前一直對這兩個註解的區別不是很明白。
搜到過一篇博客園的文章舉例說明了代碼行爲的區別。後來在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.