2012-01-07 39 views
0

我嘗試使用easyMock在我的對象中測試方法。 我做這樣的事情:如何使用EasyMock測試模擬方法

MyObject myObject = createMock(MyObject.class); 
expect(myObject.someMethod()).andReturn(someReturn); 
replay(myObject); 
myObject.methodIwantToTest(); // here assertion or sth like this 
verify(myObject); 

這樣的代碼是拋出一個異常methodIwantToTest預計不會。如何測試這種方法?

回答

4

Mocks旨在替換您正在測試的類的依賴關係。這意味着如果你正在測試類A,並且它調用了類B上的一個方法,那麼你可以用期望的行爲來模擬類B,這樣你就可以孤立地測試A.

您正在收到該錯誤,因爲當您嘲笑一個班級時,您不應該正常使用它。你應該設定期望值,然後和另一個班級一起使用你的模擬。你從來沒有設定應該調用methodIwantToTest的期望,所以當你調用它的時候,會有一個錯誤(因爲它不是框架期望的)。

也就是說,你可以創建一個部分模擬。請參閱this documentation並查找「部分」,在此只模擬某些方法。

2

就像hvgotcodes所說的,Mocks是用來模擬被測試類(CUT)依賴關係的對象,以便您的CUT可以獨立於其他代碼進行測試。

儘管可用,但通常不建議使用Partial Mocks。所論證的是,當你的軟件設計良好時,不需要使用部分模擬。但是在某些情況下,使用部分模擬可能很重要。在你的情況下,部分嘲弄可以按如下方式完成,

@Test 
public void testSomething(){ 
    MyObject myObject = createMockBuilder(MyObject.class) 
     .addMockedMethod("someMethod").createMock(); 
    expect(myObject.someMethod()).andReturn(someReturn); 
    replay(myObject); 
    myObject.methodIwantToTest(); 
    verify(myObject); 
} 
相關問題