2014-03-26 44 views
1

我有一個測試,當他們運行單獨工作正常。但是,當我將它們運行在一起時,總會失敗,預計兩次測試的總體調用會失敗,而不是一次。Mockito不重置

我已經在前後方法中添加了Mockito.reset,但無濟於事。

private Logic mockTest = Mockito.mock(Logic.class);   

    @Before 
    public void createMocks() { 
     Mockito.reset(mockTest); 
    } 

    @Test 
    public void TestGameList() { 


     Mockito.when(mockTest.getGame()).thenReturn(null); 

      Mockito.verify(mockTest, Mockito.times(1)).getGame(); 

    } 

    @Test 
    public void TestGame2List() { 


     Mockito.when(mockTest.getGame()).thenReturn(null); 

      Mockito.verify(mockTest, Mockito.times(1)).getGame(); 

    } 

爲什麼不重置工作?

我試圖VerificationModeFactory來算,但是,這並不工作要麼

+0

確保'createMocks()'方法實際被調用。 –

+0

當您使用JUnit運行此應用程序時,應該不需要您的'createMocks'方法。 JUnit爲每個測試創建一個新的類實例。所以只要字段'mockTest'不是靜態的,你就會對每個測試都有一個新的模擬。不需要'reset()'。但是,你在這裏寫的這兩個測試都會失敗,因爲沒有任何對'mockTest'的調用。 ('當(mockTest.getGame())。然後返回(...)'只是存根,這不是對'getGame()')的調用。 – benjamin

回答

0

您是否嘗試過使用@BeforeMethod註釋,而不是@Before

+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 –

+0

確實我想將此問題添加爲評論(因爲它不是答案),但我得到了「您必須擁有50條評論的評論」消息。 – m4rtin

0

使用下列之一:

@Mock 
private Logic mockTest;   

@Before 
public void createMocks() { 
    MockitoAnnotiation.initMocks(this); 
} 

private Logic mockTest;  

@Before 
public void createMocks() { 
    mockTest = Mockito.mock(Logic.class); 
} 

無論哪種方式,您將創建每個測試,從而確保沒有狀態在測試中保持了一個全新的模擬。