2016-04-21 62 views
0

我運行我的測試時沒有@RunWithinitMocks()。它不應該不工作?Mockito Mock如何在我的測試中工作沒有註釋

public class MultiFilesIteratorInMemoryTest { 
    @Before 
    public void setUp() throws Exception { 

    } 

    @After 
    public void tearDown() throws Exception { 

    } 

    @Test 
    public void getNextLine() throws Exception { 

    } 

    @Test 
    public void timeFrameIsSplitIntoTwoFilesReturnAllRelevantRecords() throws Exception { 

     IRandomAccess randomAccessFile1 = mock(RandomAccessFileWrapper.class); 
     IRandomAccess randomAccessFile2 = mock(RandomAccessFileWrapper.class); 
     IFileUtils fileUtils = mock(FileUtils.class); 

     when(randomAccessFile1.readLine()).thenReturn("first file content").thenReturn(null); 
     when(randomAccessFile2.readLine()).thenReturn("second file content").thenReturn(null); 
     when(fileUtils.getCountOfSimilarNamedFilesFromDir(anyString())).thenReturn(2); 

     IMultiFilesMerger multiFilesMerger = new MultiFilesIteratorInMemory(fileUtils, ImmutableList.of(randomAccessFile1, randomAccessFile2)); 


     String nextLine = multiFilesMerger.getNextLine(); 
     assertThat(nextLine, equalTo("first file content")); 
     nextLine = multiFilesMerger.getNextLine(); 
     assertThat(nextLine, equalTo("second file content")); 
    } 
} 

回答

1

不,它會工作得很好,因爲你明確地創建你的嘲笑,他們不被注入。

MockitoJUnitRunner僅用於注入被標註了@Mock嘲笑:

初始化嘲笑標註了模擬,使MockitoAnnotations.initMocks(Object)明確的使用是沒有必要的。

這同樣適用於initMocks

MockitoAnnotations.initMocks(this);與初始化的Mockito註解領域。

在代碼中,不使用與@Mock@InjectMocks註釋的Mockito領域。相反,你是明確地創建了與靜態工廠mock模擬。