Mock InjectMocks ( @Mock 和 @InjectMocks )區別

之前一直對這兩個註解的區別不是很明白。

搜到過一篇博客園的文章舉例說明了代碼行爲的區別。後來在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.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章